代码:
public class 计数排序 {
public static void main(String[] args) {
int[] a = {32, 567, 42, 321, 1, 2, 3, 5, 42, 62, 4, 2, 312, 4, 1, 5, 213, 5, 3, 5, 42, 321, 423, 21};
countSort(a);
for (int i : a) {
System.out.print(i + " ");
}
}
private static void countSort(int[] a) {
int max=a[0];
for(int i=0;imax)max=a[i];
}
int[] b=new int[max+1];
for(int i=0;i
堆排序
代码:
public class 堆排序 {
public static void main(String[] args) {
int[] a = {32, 567, 42, 321, 1, 2, 3, 5, 42, 62, 4, 2, 312, 4, 1, 5, 213, 5, 3, 5, 42, 321, 423, 21};
heapSort(a,0,a.length);
for (int i : a) {
System.out.print(i + " ");
}
}
private static void heapSort(int[] a,int k,int len) {
for(int i=len/2-1;i>=0;i--){
adjustHeap(a,i,len);
}
for(int j=len-1;j>=0;j--){
swap(a,0,j);
adjustHeap(a,0,j-1);
}
}
private static void adjustHeap(int[] a, int i, int len) {
int temp=a[i];
for(int k=i*2+1;ka[k]){
k++;
}
if(a[k]>temp){
a[i]=a[k];
i=k;
}else{
break;
}
}
a[i]=temp;
}
public static void swap(int[] a, int i, int j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
希尔排序
代码:
public class 希尔排序 {
public static void main(String[] args) {
int[] a = {32, 567, 42, 321, 1, 2, 3, 5, 42, 62, 4, 2, 312, 4, 1, 5, 213, 5, 3, 5, 42, 321, 423, 21};
shellSort(a);
for (int i : a) {
System.out.print(i + " ");
}
}
private static void shellSort(int[] a) {
int len=a.length;
int d=a.length>>1;
while(d>0){
for(int i=d;i=d&&a[j-d]>temp){
a[j]=a[j-d];
j-=d;
}
a[j]=temp;
}
d>>=1;
}
}
}
拓扑排序
拓扑图:
代码:
import java.util.linkedList;
public class 拓扑排序 {
static boolean[] b=new boolean[11];
static int[] a=new int[11];
public static void main(String[] args) {
linkedList[] list=new linkedList[11];
addEdge(list,0,1);
addEdge(list,0,2);
addEdge(list,2,1);
addEdge(list,2,10);
addEdge(list,1,7);
addEdge(list,1,10);
addEdge(list,1,5);
addEdge(list,7,4);
addEdge(list,4,9);
addEdge(list,9,6);
addEdge(list,9,8);
addEdge(list,8,5);
addEdge(list,5,3);
addEdge(list,10,3);
topologicalSort(list);
}
private static void addEdge(linkedList[] list, int i, int i1) {
a[i1]++;
if(list[i]==null){
list[i]=new linkedList<>();
list[i].add(i1);
}else{
list[i].add(i1);
}
}
private static void topologicalSort(linkedList[] list) {
while(true){
int i=0;
for(;i 


