插入排序
2017-01-16 本文已影响0人
七迁屋的馒头
参考别人的文章记录下来,方便自己查看
插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
算法步骤:
将待排序序列的<code>第一个元素</code>看做一个<code>有序序列</code>,把第二个元素到最后一个元素当成是<code>未排序序列</code>。
从头到尾依次扫描<code>未排序序列</code>,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
/**
* 插入排序
* @param a
*/
public static void insertSort(int[] a) {
//第一个元素作为有序序列;剩下的第二个元素到末尾元素为无序序列
//从第二个元素扫描序列
for(int i=1; i<a.length; i++) {
int target = a[i]; //此次需移动的目标
int j = i; //j是最终target移动到的位置
//target与有序序列比较,找到适合的位置j;同时将比target大的
while(j>0 && target < a[j-1]) {
a[j] = a[j-1]; //比target大的有序序列数据右移
j--; //target小于有序序列的数据时,j左移
}
//插入
a[j] = target; //在位置j上赋值target
}
}