排序算法

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 }

 

posted @ 2020-10-12 14:26  文字章  阅读(132)  评论(0)    收藏  举报