目录:
1、介绍:
2、步骤:
3、排序效果:
4、代码展示:
5、结果展现:
———————————————————————————————————-
1、介绍:
插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
2、步骤:
1、本次插入排序从小到大
2、角标从第二个值开始,遍历所有值
3、每次排序a[i]与前面的所有值比较
4、如果大,则前面的数据不动
5、如果小,则插入到数列中,所有数据往后移动
3、排序效果:
4、代码展示:
package com.datastructure.solr;
import java.util.Arrays;
/**
* Created by yuhui on 2017/5/15.
*
* 插入排序
*
* 步骤:
* 1、本次插入排序从小到大
* 2、角标从第二个值开始,遍历所有值
* 3、每次排序a[i]与前面的所有值比较
* 4、如果大,则前面的数据不动
* 5、如果小,则插入到数列中,所有数据往后移动
*/
public class A2_InserSort {
public static void main(String ars[]){
int[] a={53,27,36,15,69,42};
System.out.println("初始状态: "+Arrays.toString(a));
int[] b = InserSort(a);
System.out.println("最终状态: "+Arrays.toString(b));
}
public static int[] InserSort(int[] a){
int i,j,num=0;
//角标从第二个值开始,遍历所有值
for(i=1; i<a.length ; i++){
//每次排序a[i]与前面的所有值比较
for(j=0;j<=i;j++){
//如果大,则前面的数据不动
if(a[i]<a[j]){
//如果小,则插入到数列中,所有数据往后移动
int temp = a[i];
for(int k=i;k>j;k--){
a[k] = a[k-1];
}
a[j] = temp;
}
}
System.out.println("第"+(++num)+"次排序: "+Arrays.toString(a));
}
return a;
}
}
5、结果展现:
初始状态: [53, 27, 36, 15, 69, 42]
第1次排序: [27, 53, 36, 15, 69, 42]
第2次排序: [27, 36, 53, 15, 69, 42]
第3次排序: [15, 27, 36, 53, 69, 42]
第4次排序: [15, 27, 36, 53, 69, 42]
第5次排序: [15, 27, 36, 42, 53, 69]
最终状态: [15, 27, 36, 42, 53, 69]
如果您喜欢我写的博文,读后觉得收获很大,不妨小额赞助我一下,让我有动力继续写出高质量的博文,感谢您的赞赏!!!