几种排序算法:
1、冒泡排序:
int[] arr = {1,5,8,2,3,9,4};
int temp;
for(int i = 0;i < arr.length - 1;i++){
for(int j = 0;j < arr.length - 1 - i;j++){
if(arr[j]>arr[j + 1]){
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
System.out.println("从小到大排序的结果是:");
for(int i = 0;i < arr.length;i++){
System.out.println(arr[i] + "\t");
}
运行结果:
从小到大排序的结果是:
1
2
3
4
5
8
9
Process finished with exit code 0
2、插入排序:
int arr = {14,15,18,90,72,63,58};
int t = 0;
int j = 0;
for(int i = 0;i < arr.length;i++){
t = arr[i];
for(j = i - 1;j >= 0;j--){
if(arr[j] > t){
arr[j+1] = arr[j];
}else{
break;
}
}
}
arr[j+1] = t;
}
System.out.println("从小到大排序的结果是:");
for(int i = 0;i < arr.length;i++){
System.out.println(arr[i] + "\t");
}
运行结果是:
从小到大排序的结果:
14
15
18
58
63
72
90
Process finished with exit code 0
3、选择排序:
int[] arr = {5,3,6,2,10,2,1};
for (int i = 0; i < arr.length ; i++){
for (int j = i+1; j < arr.length ; j++){
if(arr[i] > arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
System.out.println("从小到大排序的结果:");
for (int i = 0; i < arr.length ; i++){
System.out.println(arr[i]+"");
}
运行结果:
从小到大排序的结果:
1
2
2
3
5
6
10
Process finished with exit code 0
4、希尔排序:
int len = array.length;
int temp,gap = 1/2;
while(gap > 0){
for (int i = gap; i < len ; i++){
temp = array[i];
int preIndex = i - gap;
while(preIndex >= 0 && array[preIndex] > temp){
array[preIndex + gap] = array[preIndex];
preIndex -= gap;
}
array[preIndex + gap] = temp;
}
gap /= 2;
}
return array;
运行结果:
从小到大排序的结果:
14
15
18
58
63
72
90
Process finished with exit code 0
5,分桶排序:
final int U = 10;
int[] arr = new int[10];
int[] [] bucket = new int[U][arr.length];
int[] ixs = new int[U];
for(int i = 1,count,t;;i*=10){
count = 0;
for (int j = 0; j < arr.length ; j++) {
count = ( t == arr[j]/i)>=1 ? ++count : count;
bucket[t%=U][ixs[t]++] = arr[j];
}
if(count == 0) break;
for (int j = 0; j < bucket.length; j++) {
for (int k = 0; k < ixs[j] ; k++) {
arr[ix++] = bucket[j][k];
}
}
for (int j = 0; j < ixs.length ; j++) {
ixs[j] = 0;
}
}
}
运行结果:
从小到大排序的结果是:
1
2
3
4
5
8
9
Process finished with exit code 0