各种各样的排序(集合篇)-java代码

第一个,当然是喜闻乐见的冒牌排序。

 1 public class Main {
 2 
 3     public static void main(String[] args) {
 4         // 冒泡排序;
 5         int[] a = new int[] { 9, 8, 7, 6, 5, 4, 3, 2, 1 };
 6         int t;//每次都找一个最大得数放在最后面,然后在第二个for循环中下一次得遍历次数减去1.
 7         for (int i = 0; i < 8; i++) {
 8             for (int j = 0; j < 8 - i; j++) {
 9                 if (a[j] > a[j + 1]) {
10                     t = a[j];
11                     a[j] = a[j + 1];
12                     a[j + 1] = t;
13                 }
14             }
15         }
16         for (int p : a) {
17             System.out.print(p + " ");
18         }
19 
20     }
21 
22 }

其次是快排。

 1 public class Main {
 2 
 3     public static void main(String[] args) {
 4         // 快速排序;
 5         int[] a = new int[] { 9, 8, 7, 6, 5, 4, 3, 2, 1 };
 6         int i = 0, j = 8;
 7         quickSort(a, i, j);
 8         for (int array : a) {//遍历数组。
 9             System.out.print(array + " ");
10         }
11 
12     }
13 
14     public static void quickSort(int a[], int left, int right) {
15         if (right>= left)
16             return;
17         int i=left,j=right;
18         int t = a[0];
19         while (i < j) {
20             while (i < j && a[j] > a[i])
21                 j--;
22             a[j] = a[i];
23             while (i < j && a[i] < a[j])
24                 i++;
25             a[i] = a[j];
26         }
27         a[i] = t;//t是作为一个中转站来保存数据的。
28         quickSort(a, i+1, right);//这里相当于递归调用。
29         quickSort(a, left, i-1);
30     }
31 
32 }

 接下来是选择排序哦!

 1 public class Main {
 2 
 3     public static void main(String[] args) {
 4         // 选择排序;
 5         int[] a = new int[] { 9, 8, 7, 6, 5, 4, 3, 2, 1 };
 6         int min,t;//选择排序是选择一个位置,把后面适合这个位置的数转移过来。
 7         for(int i=0;i<8;i++) {
 8             min=i;
 9             for(int j=i;j<9;j++) {
10                 if(a[j]<a[min])min=j;
11             }
12             t=a[i];
13             a[i]=a[min];
14             a[min]=t;
15         }
16         for (int array : a) {//遍历数组。
17             System.out.print(array + " ");
18         }
19 
20     }
21 
22 }

 

上一篇:c – Quicksort优化


下一篇:c – STL排序进入无限循环?