一、直接排序: 数组
public static void selectSort(int[] arr) { for (int x = 0; x < arr.length - 1; x++) { for (int y = x + 1; y < arr.length; y++) { if (arr[x] > arr[y]) { int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } } }
说明:双重for循环,数组的第一个数a[0]和后面全部的数进行比对,获得最小的数,而后第二个数a[1]和后面全部的数进行比对,获得次小的数。。。反复后获得排序后的结果。spa
二、冒泡排序code
(1)、blog
1 public static void bubbleSort(int[] arr) { 2 3 for(int x=0; x<arr.length-1; x++) { 4 5 for(int y=0; y<arr.length-x-1; y++) { 6 7 if(arr[y]>arr[y+1]){ 8 9 int temp = arr[y]; 10 11 arr[y] = arr[y+1]; 12 13 arr[y+1] = temp; 14 15 } 16 17 } 18 19 } 20 21 }
(2)、排序
1 public static void sort(int[] a) { 2 int temp = 0; 3 for (int i = a.length - 1; i > 0; --i){ 4 for (int j = 0; j < i; ++j){ 5 if (a[j + 1] < a[j]){ 6 temp = a[j]; 7 a[j] = a[j + 1]; 8 a[j + 1] = temp; 9 } 10 } 11 } 12 }
说明:冒泡排序是两两之间进行对比, 如:4.2.5.1.7 :第一次内循环、4和2比-->2,4 、4和5比-->4,五、5和1比-->5,一、5和7比-->5,7。for循环
这样最大的一个数就到了数组的最后,第二次进行比对的时候只要比数组长度-2次,就是<arr.length-1,便可获得次大的数,放在倒数第二的位置,如此反复获得排序后的数组。class
三、插入排序:select
public static void insertSort(int[] a) { for (int i = 1; i < a.length; i++) { for (int j = i; j > 0; j--) { if (a[j] < a[j - 1]) { int temp = a[j - 1]; a[j - 1] = a[j]; a[j] = temp; }else break; } } }
说明:插入排序和打牌同样,拿到一个数和前面已有的数进行对比,比前面的数小就放到前面,举例:4,2,5,1,7 : 循环
第一次内循环、拿到数a[1]=2,和a[0]=4进行对比,2小,换位置;sort
第二次内循环、拿到数5,和4比,位置不变,if判断为false,则break,跳出内循环,进行下一次;
第三次内循环、拿到数1,和5比,交换位置,1在和4比,交换位置,最后和2比,再次交换位置,获得结果,1,2,4,5,7;
...