软考二进宫-排序算法-直接插入、直接选择
2016-05-19 09:49
218 查看
插入排序:每步将一个待排数按其大小插到前面已经排好的数列中,直到全部插完
插入排序主要有直接插入和希尔排序两种
直接插入:
当插入第i个记录时,R1,R2,R3,,,Ri-1均已排好,因此,将第i个记录Ri依次与R1,R2,R3,,,Ri-1进行比较,找到合适位置。
此算法简单明了,但速度较慢
如对数列57,68,59,52排序,
第一步:R1为57,已排好序,比较R2和R1,即比较68和57,68>57,无需移动位置
第二步:比较R3,即59,59分别和57、68比较,因为57<59<68,所以59插到57之后,68之前,数列变为
57,59,68,52
第三步:比较52和前面三个数,确定它的位置在57之前,所以,数列变为52,57,59,68,此时,排序完成
选择排序基本思想:每一步都从待排数列选出最小的记录,按顺序存放在已排序的记录序列后面
常见选择排序:直接选择,堆排序
直接选择:
在所有记录中选出最小的数,把它与第一个记录交换,然后在其余的记录中选出最小的数,与第2个记录交换,依次类推,直到所有记录排完为止
无论待排序列如何,在第i趟排序中选出最小数,需做n-i次比较,因此,总的比较次数为n(n-1)/2=O(n2)。
当待排序为正序时,移动次数为0
反序时,每趟均需执行交换操作,总的移动次数取最大值3(n-1)
直接选择排序的平均时间复杂度为O(n2),是不稳定的
对于待排数列:34 56 12 23 67 98 34 67
排序过程:
插入排序主要有直接插入和希尔排序两种
直接插入:
当插入第i个记录时,R1,R2,R3,,,Ri-1均已排好,因此,将第i个记录Ri依次与R1,R2,R3,,,Ri-1进行比较,找到合适位置。
此算法简单明了,但速度较慢
如对数列57,68,59,52排序,
第一步:R1为57,已排好序,比较R2和R1,即比较68和57,68>57,无需移动位置
第二步:比较R3,即59,59分别和57、68比较,因为57<59<68,所以59插到57之后,68之前,数列变为
57,59,68,52
第三步:比较52和前面三个数,确定它的位置在57之前,所以,数列变为52,57,59,68,此时,排序完成
选择排序基本思想:每一步都从待排数列选出最小的记录,按顺序存放在已排序的记录序列后面
常见选择排序:直接选择,堆排序
直接选择:
在所有记录中选出最小的数,把它与第一个记录交换,然后在其余的记录中选出最小的数,与第2个记录交换,依次类推,直到所有记录排完为止
无论待排序列如何,在第i趟排序中选出最小数,需做n-i次比较,因此,总的比较次数为n(n-1)/2=O(n2)。
当待排序为正序时,移动次数为0
反序时,每趟均需执行交换操作,总的移动次数取最大值3(n-1)
直接选择排序的平均时间复杂度为O(n2),是不稳定的
对于待排数列:34 56 12 23 67 98 34 67
排序过程:
相关文章推荐
- 软考冲刺倒计时,国内最具实力的软考培训团队编写,参与过国家软考大纲的修订!
- 2008软考网络工程师题
- 2008年软考上半年网络管理员试题
- 关于软考与职称的正确认识
- 快来看啊-2008全国软考上海地区资讯!
- 致2008年11月8日参加软考的考生:
- 我的亲身经历,网规考试经验分享
- 2011年软考软件设计师辅导资料(转)
- 2011上半年网络规划设计师试题下载(转)
- 2010下半年软件设计真题分析和下载
- 2010下半年软件设计真题分析和下载
- 2010下半年软件设计真题分析和下载
- 需求分析的定义(转)
- 需求分析的定义(转)
- 需求分析的定义(转)
- 数工:Oracle数据库的一些基本常识
- 2007年11月软考网络工程师下午试卷
- 2007年11月软考网络工程师上午试卷
- 软考、等考、自考视频教程
- 冲刺软考网工倒计时08天