您的位置:首页 > 其它

排序算法之插入排序

2016-04-03 22:29 239 查看
插入排序,在数据量大的时候,比冒泡要好。插入排序的思想用摸牌来比喻,会更容易理解:

假设手头上已有1张牌

摸张新牌,和手头上的牌逐个比较,从最后那张开始,小的话,手头上的牌移位

新牌入序列

所以:

步骤一:外层循环,从1开始,假设手头上已经有1张牌了

步骤二:摸一張牌,放在临时区;

步骤三:手头上的牌,从后往前遍历,与临时区的牌比较,手头上的大,那么移位

public static void insertSort(int[] a, int length) {
int i,j,temp;
for(i=1;i<length;i++) {
//摸一张牌
temp = a[i];
//手头的牌和新牌比较,大了才移位
for(j=i-1;j>=0 && a[j]>temp;j--) {
a[j+1] = a[j];
}
//新牌入序列
a[j+1] = temp;
}
}


时间复杂度,与冒泡一样,最好O(n),最坏O(n^2),结果与数据的初始状态有关,初始数据越有序,insertion/bubble就约快
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: