程序算法艺术与实践:经典排序算法之插入排序

插入排序(Insertion Sort)的基本思想是每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。

基本思想与伪代码

经过j-1遍处理后,A[1..j-1]己排好序。第j遍处理仅将A[j]插入L[1..j-1]的适当位置,使得A[1..j]又是排好序的序列。要达到这个目的,我们可以用顺序比较的方法。首先比较A[j]和A[j-1],如果A[j-1]≤ A[j],则A[1..j]已排好序,第i遍处理就结束了;否则交换A[j]与A[j-1]的位置,继续比较A[j-1]和A[j-2],直到找到某一个位置i(1≤i≤j-1),使得A[j] ≤A[j+1]时为止。用伪码描述如下:

算法: InsertSort(A,n)
输入:n个数组A
输出:按照递增顺序的数组A

1. for j ← 2 to n do
2.    x←A[j]
3.    i ← j-1                       //行3到行7把A[j]插入A[1.....j-1]之中
4.    while i >0 and x <A[i] do
5.           A[i+1] ← A[i]
6.           i← i-1
7.           A[i+1] ← x
如下图所示演示了对4个元素进行插入排序的过程,共需要(a),(b),(c)三次插入。对4个元素进行插入排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值