首页 > 代码库 > 选择、冒泡、插入、直接排序算法

选择、冒泡、插入、直接排序算法

技术分享
  1 public class Demo {
  2 
  3     public static void main(String[] args) {
  4         int[] arr = new int[10];
  5         for (int i = 0; i < arr.length; i++) {
  6             Random rd = new Random();
  7             arr[i] = rd.nextInt(100);
  8         }
  9         System.out.println("需排序数组-->");
 10         for (int j = 0; j < arr.length; j++) {
 11             System.out.print(arr[j] + "\t");
 12         }
 13         System.out.println();
 14         System.out.println();
 15         
 16         //选择排序
 17         for (int i = 1; i < arr.length; i++) {
 18             int max = 0;
 19             for (int j = 0; j <= arr.length-i; j++) {
 20                 if(arr[j]>arr[max]){
 21                     max = j;
 22                 }
 23             }
 24             int temp = arr[arr.length-i];
 25             arr[arr.length-i] = arr[max];
 26             arr[max] = temp;
 27         }
 28         System.out.println("选择排序结果-->");
 29         for (int j = 0; j < arr.length; j++) {
 30             System.out.print(arr[j] + "\t");
 31         }
 32         System.out.println();
 33         
 34         //冒泡排序
 35         for (int i = 1; i < arr.length; i++) {
 36             for (int j = 0; j < arr.length-1; j++) {
 37                 if (arr[j+1]<arr[j]) {
 38                     int temp = arr[j+1];
 39                     arr[j+1] = arr[j];
 40                     arr[j] = temp;
 41                 }
 42             }
 43         }
 44         System.out.println("冒泡排序结果-->");
 45         for (int j = 0; j < arr.length; j++) {
 46             System.out.print(arr[j] + "\t");
 47         }
 48         System.out.println();
 49 
 50         //快速排序
 51         quickSort(arr, 0, arr.length-1);
 52         System.out.println("快速排序结果-->");
 53         for (int j = 0; j < arr.length; j++) {
 54             System.out.print(arr[j] + "\t");
 55         }
 56         System.out.println();
 57         
 58         //直接插入排序
 59         for (int i = 1; i < arr.length; i++) {
 60             int temp = arr[i];
 61             int j;
 62             for (j = i - 1; j >= 0 && arr[j] > temp; j--) {
 63                 arr[j + 1] = arr[j];
 64             }
 65             arr[j + 1] = temp;
 66         }
 67         System.out.println("直接插入排序结果-->");
 68         for (int j = 0; j < arr.length; j++) {
 69             System.out.print(arr[j] + "\t");
 70         }
 71         System.out.println();
 72         
 73         //使用sort()排序
 74         Arrays.sort(arr);
 75         System.out.println("使用sort()排序结果-->");
 76         for (int j = 0; j < arr.length; j++) {
 77             System.out.print(arr[j] + "\t");
 78         }
 79         System.out.println();
 80         
 81     }
 82     
 83     public static void quickSort(int[] a, int l, int r) {
 84 
 85         if (l < r) {
 86             int i,j,x;
 87 
 88             i = l;
 89             j = r;
 90             x = a[i];
 91             while (i < j) {
 92                 while(i < j && a[j] > x){
 93                     j--; // 从右向左找第一个小于x的数
 94                 }
 95                 if(i < j){
 96                     a[i++] = a[j];
 97                 }
 98                 while(i < j && a[i] < x){
 99                     i++; // 从左向右找第一个大于x的数
100                 }
101                 if(i < j){
102                     a[j--] = a[i];
103                 }
104             }
105             a[i] = x;
106             quickSort(a, l, i-1); /* 递归调用 */
107             quickSort(a, i+1, r); /* 递归调用 */
108         }
109     }
110 
111 }
View Code
排序结果
技术分享
需排序数组-->
17    27    40    80    84    0    68    38    39    53    

选择排序结果-->
0    17    27    38    39    40    53    68    80    84    
冒泡排序结果-->
0    17    27    38    39    40    53    68    80    84    
快速排序结果-->
0    17    27    38    39    40    53    68    80    84    
直接插入排序结果-->
0    17    27    38    39    40    53    68    80    84    
使用sort()排序结果-->
0    17    27    38    39    40    53    68    80    84    
View Code

 

选择、冒泡、插入、直接排序算法