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

Posted 星之寒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择冒泡插入直接排序算法相关的知识,希望对你有一定的参考价值。

技术分享
  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

 

以上是关于选择冒泡插入直接排序算法的主要内容,如果未能解决你的问题,请参考以下文章

排序算法系列1--简单排序(选择,冒泡,直接插入)

11.python排序算法之冒泡排序简单选择排序,二元选择排序直接插入排序

排序算法

Python八大算法的实现,插入排序希尔排序冒泡排序快速排序直接选择排序堆排序归并排序基数排序。

8大排序算法-我熟知(冒泡直接插入)

插入排序(直接插入排序希尔排序);交换排序(冒泡排序快速排序);选择排序(简单选择排序堆排序);归并排序和基数排序;基于关键词比较的排序算法下界分析