排序算法
java实现插入排序(思路和实现)
插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
插入排序分析
效果图:
代码实现:
1 public class Insert { 2 public static void main(String[] args) { 3 int[] ins = {2,3,5,1,23,6,78,34}; 4 int[] ins2 = sort(ins); 5 for (int in: ins2) { 6 System.out.println(in); 7 } 8 } 9 10 11 12 public static int[] sort(int[] ins){ 13 for(int i=1; i<ins.length; i++){ 14 for(int j=i; j>0; j--){ 15 if(ins[j]<ins[j-1]){ 16 int temp = ins[j-1]; 17 ins[j-1] = ins[j]; 18 ins[j] = temp; 19 } 20 } 21 } 22 return ins; 23 }
针对上面的这个排序算法改进:首先上面的这个每次替换都要定义一个temp赋值需要插入的数,这样会造成不必要的浪费:
所以我们可以吧所有的大于需要插入的数先保存,然后进行比较,然后将最后的正确位置空出来。吧之前保存的需要插入的数放到正确位置上;
代码:
1 public static int[] sort2(int[] ins){ 2 for(int i=1; i<ins.length; i++){ 3 int temp = ins[i];//保存每次需要插入的那个数 4 int j; 5 } 6 for(j=i; j>0&&ins[j-1]>temp; j--){//这个较上面有一定的优化 7 ins[j] = ins[j-1];//吧大于需要插入的数往后移动。最后不大于temp的数就空出来j 8 } 9 ins[j] = temp;//将需要插入的数放入这个位置 10 return ins; 11 }

浙公网安备 33010602011771号