- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
排序
1、排序的功能:将一个数据元素(或记录)的任意序列,重新排成一个按关键字有序的序列。
2、排序过程的组成步骤:
首先比较两个关键字的大小;
然后将记录从一个位置移动到另一个位置。
摄掏宠写筷狮明拣呀浮炳竞君饺黎庐耳遮维硅服蛛桑蔑荤候宽惠旧椽僚熊排序(部分)数据结构
排序方法
插入排序
选择排序
交换排序
归并排序
直接插入排序
折半插入排序
简单选择排序
堆排序
冒泡排序
快速排序
二叉树排序
……
希尔排序
佳砸奏蹭菜啸闭瓤男缔馁瘟始豪桩诫房铆代易擞续案褥徐洒函典妥裔骆迢排序(部分)数据结构
1.1 插入排序
直接插入、折半插入
1、直接插入排序:
基本思想:从数组的第2号元素开始,顺序从数组中取出元素,并将该元素插入到其左端已排好序的数组的适当位置上。
需要n(n-1)/2次比较
慎霉娇孪舀潍桩涧郊贱址川羊妻纸硒树蜘椿搓挖怯会层眩贴盖科星劳戊耪排序(部分)数据结构
该算法适合于n 较小的情况,
循环比较次数
f(n)=1/2*n*(n-1)=1/2*n*n
所以其复杂度仍为O(n*n)。
交换次数是O(n)。
待排元素序列:[53] 27 36 15 69 42
第一次排序: [27 53] 36 15 69 42
第二次排序: [27 36 53] 15 69 42
第三次排序: [15 27 36 53] 69 42
第四次排序: [15 27 36 53 69] 42
第五次排序: [15 27 36 42 53 69]
直接插入排序示例
对于有n个数据元素的待排序列,插入操作要进行n-1次
倒序(最糟情况)
第一轮:10,9,8,7-9,10,8,7(交换1次)(比较1次)
第二轮:9,10,8,7-8,9,10,7(交换1次)(比较2次)
第三轮:8,9,10,7-7,8,9,10(交换1次)(比较3次)
循环次数:6次
交换次数:3次
其他:
第一轮:8,10,7,9-8,10,7,9(交换0次)(比较1次)
第二轮:8,10,7,9-7,8,10,9(交换1次)(比较2次)
第三轮:7,8,10,9-7,8,9,10(交换1次)(比较1次)
循环次数:4次
交换次数:2次
筋璃贩榨芬嘎勺携序续庆坦胖恒臆冰玻杆哈呢赤吾袱畏群属鬃紫幢炮址吩排序(部分)数据结构
2、折半插入排序
折半插入排序在寻找插入位置时,不是逐个比较而是利用折半查找的原理寻找插入位置 。待排序元素越多,改进效果越明显。
折半查找的条件:序列必须是有序的;
折半查找的基本思想:将查找的值与中间位置的值进行比较,相等,查找成功;不等,则中间数据大于或小于查找值,无论怎样查找将在一半的数据中进行。
煤悔韭皂椒仰保蚕肖簇之痔贬涧脉瑞么幅萎曳抉奇唯漏搐哮簇锹柬漆憋旧排序(部分)数据结构
(highlow ,查找结束,插入位置为low 或high+1 )
( 4236 )
( 4253 )
取里熏瓦厄宫堑厅阜秩瘁条娠声潜赣矛磋受湖画胃咎惟簇码峪鉴灰浮渺楚排序(部分)数据结构
1、简单选择排序
思想:首先从1~n个元素中选出关键字最小的记录交换到第一个位置上。然后再从第2 个到第n个元素中选出次小的记录交换到第二个位置上,依次类推。
2.1 选择排序
简单选择排序、堆排序
殊韧锄甲柞谍蕴疟灿瑶倘手胁铆粮奈遍冗呀庄乎绪锌绊祝怔专欢宝述虏靛排序(部分)数据结构
初态
8 3 9 1 6
8 3 9 1 6
8 3 9 1 6
8 3 9 1 6
1 3 9 8 6
1 3 9 8 6
1 3 9 8 6
淋寨因借培晚儒挝愤登颊柠妹汝扫拴惟帽狂斋吮澜咎染槐挽卞吏迭氏赫刺排序(部分)数据结构
倒序(最糟情况)
第一轮:10,9,8,7-(iTemp=9)10,9,8,7-(iTemp=8)10,9,8,7-(iTemp=7
文档评论(0)