- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
孙猛
/teachers/sunm
2017年12月21 日
1
•
择排序
•
交换排序
2
• 基本思想:
• 护最⼩的i 个录的已排序序列;
•
每次从剩余未排序的录中取关最⼩的录,排
在已排序序列之后,作为序列的i +1
• 以排序序列开始; 每次从未排序录中排序最⼩的录,
与未排序段的⼀个录交换;直到所有录排好序。
• 直接择排序的⽐次数与⽂件初始状态⽆关。
•
循环序⽐,护已找到的最⼩录下标。循环束时
得到未排序段最⼩录的下标,交换扩展已排序序列。
• 未排序段剩下⼀个元时就不必再择。
•
直接择排序⽤序存储⽅式。
≤
已排序段中的最⼤元⼩于于所有未排序元
4
[ 13 ] 38 65 97 49 49 27 76
5
void selectSort(SortObject * pvector) {
int i, j, k;
RecordNode temp, *data = pvector-record;
for( i = 0; i pvector-n-1; i++ ) { /* 做n-1次择排序 */
k = i;
for (j = i+1; j pvector-n; j++) /* 在⽆序段找最⼩录*/
if (data[j].key data[k].key) k = j;
if (k != i) { /* 时交换录 */
temp = data[i];
data[i] = data[k];
data[k] = temp;
}
}
}
6
• 直接择排序的时复杂度:
• 录动:最好时 0 ; 最坏时O (n);
• ⽐:n (n-1)/2 (总是样);
2
• 总的时复杂度:O (n );
• 定性: 不定
•
其中的交换操作是导不定的根源。如果改为动前⾯未排序
元出位后存⼊, 可以把法改为定的。
2
• 直接择排序没有应性,对任何序列O (n ) 次⽐。
•
实明其平均排序效率低于直接插⼊排序法。
文档评论(0)