今天复习排序,发现自己还是没什么长进,不过对于直接插入排序,还是有更深入的一点理解,这里留下点痕迹。
插入排序分为3类,即直接插入排序、二分排序以及希尔排序。
这里简单描述一下直接插入排序的思路。假如你现在是一名新生,早上全学院的学生去文体馆前集合,一个专业一列总队,而你去晚了,不知道自己该站哪,于是需要把自己插入到一个队列中去,这里模拟一下大脑的思路。因为你去晚了,所以你的同学都已经按照高矮顺序站好了,你从队尾开始比较,假如他比你低,ok,没他啥事了,如果他比你高,那他就得往后退,给你留下你站的位置,即就是比你高的所有同学都得往后退,一直找到一个比你矮的同学,然后结束。
时间仓促,简单的贴一下代码思路。
1 public static void main(String[] args) { 2 InsertionSort ins=new InsertionSort(); 3 int[] arr={57,68,59,52}; 4 System.out.println("Before Sorting:"); 5 for (int i : arr) { 6 System.out.print(i+" "); 7 } 8 ins.inertSort(); 9 for(int i=1;i<arr.length;i++){ 10 int temp=arr[i]; 11 System.out.print("temp="+temp+" "); 12 13 for(int j=i-1;j>=0;j--){ 14 System.out.print("j="+j+" "); 15 if(arr[j]>temp){ 16 arr[j+1]=arr[j]; 17 }else break; 18 arr[j]=temp; 19 } 20 21 } 22 System.out.println("After Sorting:"); 23 for (int i : arr) { 24 System.out.print(i+" "); 25 } 26 27 }
时间: 2024-10-04 09:40:41