不懂的东西还有很多,随着不断的学习,不懂的东西更多,无法消灭更多不懂的东西,那就不断的充实自己吧。 欢迎关注微信公众号:菜鸟的机器学习
分类: C/C++
2012-02-16 19:43:12
一、直接选择排序的思想
n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:
1、 初始状态:无序区为array[1…n],有序区为空;
2、 第一趟排序:
在无序区array[1…n]中选出关键字最小的记录array[k],将它与无序区的第1个记录array[0]交换,使array[1..1]和array[2…n]分别为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
……..
3、第i趟排序
第i趟排序开始时,当有序区和无序区分别为array[0…i-1]和array[i…n-1]。该趟排序从当前无序区中选出关键字最小的记录array[k],将它与无序区的第1个记录array[i]交换。使R[1..i]和R[i+1..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。
二、C代码实现
三、直接选择排序的时间
直接选择排序的平均时间复杂度为O(n*n),并且是一种不稳定的排序。