常见的排序方法
1.冒泡排序
-
冒泡排序,是通过每一次遍历获取最大/最小值
-
将最大值/最小值放在尾部/头部
-
然后除开最大值/最小值,剩下的数据在进行遍历获取最大/最小值
-
代码实现
package array; import java.util.Arrays; public class Demon04 { public static void main(String[] args) { int[] a = {3, 6, 1, 2, 5}; int[] x = sort(a); System.out.println(Arrays.toString(x)); } //冒泡排序 public static int[] sort(int[] array){ //外层循环 int m=0; for (int i = 0; i < array.length-1; i++) { //外循环只需要比较array.length-1次 for (int j = 0; j < array.length-1-i; j++){ //内层循环,每次相邻两数比较讲最小数放置最后面 if(array[j+1]>array[j]){ m=array[j+1]; array[j+1]=array[j]; array[j]=m; } } } return array; } }
2.选择排序
-
将第一个值看成最小值
-
依次和后面每一位比较找出最小值和其下标
-
交换本次遍历的起始值和找出的最小值,并使下一次的起始值往后移动一位,然后继续遍历
-
说明:每次遍历的时候,将前面找出的最小值,看成一个有序的列表,后面的看成无序的列表,然后每次遍历无序列表找出最小值
-
代码实现
package array; import java.util.Arrays; public class Demon05 {//选择排序 public static void main(String[] args) { int a[]={3,1,4,24,53,2}; int x[]=sort(a); System.out.println(Arrays.toString(x)); } public static int[] sort(int[] arr) { for (int i = 0; i < arr.length; i++) { //外层循环需要循环arr。length次 //设置起始值为最小值,设置变量index用于交换最小值的位置 int min = arr[i]; int index = i; //内层循环 //通过与后面的数据进行比较得出,最小值和下标 for(int j=i+1;j<arr.length;j++){ if(min>arr[j]){ min=arr[j]; index=j; } } //交换最小值 int temp=arr[i]; arr[i]=min; arr[index]=temp; } return arr; } }
3.插入排序
-
默认从第二个数开始比较
-
如果后面数比前面数小则交换位置
-
如果后面数比前面数大则不变
-
然后在用第三个数据比较,如果比前面小,则插入。否则,退出循环依次往后推
-
代码实现
package array; import java.util.Arrays; public class Demon07 {//插入排序 public static void main(String[] args) { int[] arr={15,4,32,2,5,3,9}; for (int i = 1; i < arr.length; i++) { //外层循环arr.length-1次 for(int j=i;j>0;j--){ //从第二个数开始比较 if(arr[j]<arr[j-1]){ int temp=arr[j-1]; arr[j-1]=arr[j]; arr[j]=temp; }else { break;//退出循环,可优化程序,减少算法 } } } System.out.println(Arrays.toString(arr)); } } break;//退出循环,可优化程序,减少算法 } } } System.out.println(Arrays.toString(arr)); } }