常见排序方法(插入与希尔)
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 }


浙公网安备 33010602011771号