选择冒泡插入直接排序算法
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 }
排序结果
需排序数组--> 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
以上是关于选择冒泡插入直接排序算法的主要内容,如果未能解决你的问题,请参考以下文章
11.python排序算法之冒泡排序简单选择排序,二元选择排序直接插入排序
Python八大算法的实现,插入排序希尔排序冒泡排序快速排序直接选择排序堆排序归并排序基数排序。
插入排序(直接插入排序希尔排序);交换排序(冒泡排序快速排序);选择排序(简单选择排序堆排序);归并排序和基数排序;基于关键词比较的排序算法下界分析