常见排序方法(插入与希尔)

1.插入排序
 1 package paixu;
 2 import java.util.Arrays;
 3 public class ChaRu {
 4     public static void main(String[] args) {
 5         int[] arr = new int[] {5,3,2,8,5,9,1,0};
 6         System.out.println(Arrays.toString(arr));
 7         insertSort(arr);
 8         System.out.println(Arrays.toString(arr));
 9     }
10     public static void insertSort(int[] arr) {
11         //遍历所有的数字,从小到大排序
12         for(int i=1;i<arr.length;i++) {
13             //如果当前数字比前一个数学小
14             if(arr[i]<arr[i-1]) {
15                 //把当前遍历数字存起来
16                 int temp=arr[i];
17                 int j;
18                 //遍历当前数字前面所有的数字
19                 for(j=i-1;j>=0&&temp<arr[j];j--) {
20                     //把前一个数字赋给后一个数字
21                     arr[j+1] = arr[j]; 
22                 }
23                 //把临时变量(外层for循环的当前元素)赋给不满足元素的后一个值
24                 arr[j+1] = temp;
25             }
26         }
27     }
28 }
2.希尔排序
 1 package paixu;
 2 import java.util.Arrays;
 3 public class XiEr {
 4     
 5     public static void main(String[] args) {
 6         int[] arr = new int[] {3,5,6,2,88,1,2,3,4,2};
 7         System.out.println(Arrays.toString(arr));
 8         shellSort(arr);
 9         System.out.println(Arrays.toString(arr));
10     }
11     
12     public static void shellSort(int[] arr) {
13         int k =1;
14         //遍历所有的步长
15         for(int d=arr.length/2;d>0;d/=2) {
16             //遍历所有的元素
17             for(int i=d;i<arr.length;i++) {
18                 //遍历本组中所有的元素
19                 for(int j=i-d;j>=0;j-=d) {
20                     //如果当前元素大于加上步长后的那个元素
21                     if(arr[j]>arr[j+d]) {
22                         int temp= arr[j];
23                         arr[j]=arr[j+d];
24                         arr[j+d]=temp;
25                     }
26                 }
27             }
28             System.out.println("第"+k+"次排序结果"+Arrays.toString(arr));
29             k++;
30         }        
31     }    
32 }

                          

 

posted @ 2018-12-15 19:04  落水河图  阅读(251)  评论(0)    收藏  举报