插入排序,适用于新手来理解的一篇博客!

1.1了解插入排序?

插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但是它的实现方式可谓是最容易理解的,就好像你在打扑克牌,往往都会用顺序放牌,是一种直观的排序方式,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

1.2插入排序的算法步骤

将第一个元素看做为有序序列,后将第二个到最后一个看成一个未排序序列,从头到尾依次扫描未排序序列进行比较,找到相应的位置并进行插入。

1.3插入动图演示

插入图片:插入排序的动图实现原理

1.4代码实现部分

插入代码:package cn.cjrh;
public class insertSort
{
public static void main(String[] args) {
int [] arr = {82,7,8,12,65,94,76,1,46,3,64,78,45,11,28,39,78,45,63,96,47,85,14,52,25,36,63}; //设一个不规则的int数组进行比较
System.out.println(“排序前”);
for (int i=0;i<arr.length;i++)
{
System.out.print(arr[i]+" “);
}
System.out.println();
for (int i = 1;i<arr.length;i++) //准备用用循坏来进行插入排序
{
int tmp = arr[i]; //使用一个变量来记录当前所要比较的数值
int j=i; //记录出当前循环的下标
while (j>0 &&tmp<arr[j-1]) //当当前下标不为0 并且当前所要比较的值小于数组中上一个的值
{
arr[j]=arr[j-1]; //把数组中上一个值赋给当前 也就是j
j–; //j-- 保证一直往前循环,
}
if (j != i) //联合上文,当j的值进行变化时说明a[j]的值已经被arr[j-1]覆盖 也就是arr[j]==arr[j-1] value:true
{
arr[j] = tmp; //把当前的值赋值给arr[j]实现值的交换,以达到进行排序的方法
}
//QQ1600172003
}
System.out.println(“排序后”);
for (int i=0;i<arr.length;i++)
{
System.out.print(arr[i]+” ");
}
}
}

其他语言代码请翻阅菜鸟教程:https://www.runoob.com/w3cnote/insertion-sort.html

1.5 控制台输出结果

这个就是排序前后的区别

文章到此也就结束了,我自己的理解比较肤浅,也都写在了注释里,欢迎各路大神对理解错误的地方发出修改,希望大家看完本文能有所获,能够给予你们小小的帮助。

第一次写博客,没有写出好的排版以及高质量的文章,希望大家可以理解一下,觉得有帮助的话点个赞再走,谢谢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章