这是我参与8月更文挑战的第4天,活动详情查看:8月更文挑战
想要坚持写点什么,那干脆写一个系列吧。想想有什么可以写的呢?程序=算法+数据结构,可见算法的重要性。这个系列老诗力求用最简单的语言把算法讲得明明白白,由浅到深,有兴趣的话,可以关注一下专栏。
在面试中,经常会考到插入排序算法,而且还是让你现场手写的那种。对于初入职场的同学们一定要在这一方面做好准备。
插入排序描述
插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。简单来将,这就相当于我们在打扑克牌的时候,我们一张一张摸牌,然后再把新发的牌插入已经排好序的牌里面。
插入排序图示
就像上图
(a)我们一开始的牌只有5,然后需要插入2。完了序列中有25序列。
(b)我们一开始的牌只有25,然后需要插入4。完了序列中有245序列。
(c)我们一开始的牌只有245,然后需要插入6。完了序列中有2456序列。
(d)我们一开始的牌只有2456,然后需要插入1。完了序列中有12456序列。
(e)我们一开始的牌只有12456,然后需要插入3。完了序列中有123456序列。
插入算法实现
public class Insertion
{
public static void sort(Comparable[] a)
{
//将a[]按升序排列
int N=a.length;
for (int i=1;i<N;i++)
{
//将a[i]插入到a[i-1],a[i-2],a[i-3]……之中
for(int j=i;j>0&&(a[j].compareTo(a[j-1])<0);j--)
{
Comparable temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
}
想要学习更多算法问题,或者要更多项目源码,请移步到公众号:诗一样的代码。
既然进来了,原创不易。小伙伴点个赞再走呗。