Java实现常见排序算法
1、冒泡排序
规则,①、左边开始,比较两个数。②、如果左边大,则交换位置。③、如果右边大,则不交换位置。
1 public static void bubleSort(int arr[]){ 2 3 for (int i = 0; i < arr.length - 1; i++) { 4 for (int j = 0; j < arr.length - i - 1; j++) { 5 if (arr[j]>arr[j+1]){ 6 int temp = arr[j]; 7 arr[j] = arr[j+1]; 8 arr[j+1] = temp; 9 } 10 } 11 } 12 }
2、选择排序
选择排序和冒泡排序有点类似
1 public static void selectSort(int arr[]){ 2 3 //第二层循环就是从剩下的数遍历 4 //每次遍历完,不需要从头遍历,从剩余的数中获取最小的一个,所以遍历剩下的数,int i=j 5 for (int i = 0; i < arr.length - 1; i++){ 6 for (int j = i + 1; j < arr.length; j++) { 7 //找到了比array[i]小的则与array[i]交换位置 8 if (arr[i] > arr[j]) { 9 int temp = arr[i]; 10 arr[i] = arr[j]; 11 arr[j] = temp; 12 } 13 } 14 } 15 }
3、插入排序
1 public static void insertionSort(int arr[]){ 2 //无序序列第一个数的下标 3 int i; 4 //有序序列最后一个数的下标 5 int j; 6 //要插入的数据 7 int insertNode; 8 //从数组的第二个元素开始循环将数组中的元素插入 9 for (i = 1; i < arr.length ; i++) { 10 //设置数组中的第二个元素为第一次循环要插入的数据 11 insertNode = arr[i]; 12 //有序序列中最后一个元素的下标 13 j = i - 1; 14 //防止数组下标越界异常,j>=0 并且要放在&&条件之前 15 while (j>=0 && arr[j]>insertNode){ 16 arr[j+1] = arr[j]; //如果要插入的元素小于第j个元素,就将第j个元素往后移 17 j--; //跳出while循环 18 } 19 //直到要插入的元素大于第j个元素,将insertNode放入数组 20 arr[j+1] = insertNode; 21 } 22 }
https://www.cnblogs.com/zhaosq/p/9857713.html
https://www.cnblogs.com/toria/p/sort.html