您的位置:首页 > 其它

基础算法之四--排序: 之选择排序

2012-02-22 15:00 323 查看
三种简单排序的区别:

冒泡排序是 未排序部分,相邻元素之间两两比较移动,从而找出最值。

插入排序是 某个待排序元素与以排元素两两比较, 从而找到待排元素所应在的位置

选择排序是 在未排部分,一次遍历找到最大值,然后将其置于未排部分的末尾位置。

选择排序、冒泡排序,都是遍历未排序部分, 所不同的是:

选择排序,遍历时,不进行移动,而是标记出最大值所在的索引

而冒泡排序,遍历时,两两比较,移动频繁。

因此,选择排序的效率要高于冒泡排序。

以下是摘自网络上的图示:



各种排序算法实现的关键:

在设计各个具体算法代码时, 关键之处是弄清楚 哪些元素是未排的,哪些元素是已经排好的。

即分清: 未排元素 与 以排元素的分界线

程序代码:

void StraightSelectionSort(int *p, int n)
{
int i,j,t;
int indexMax;

for (i=0;i<n;i++)  // 0....n-1
{
// 未排元素 0...n-1-i   以排元素 n-i...n-1
for (j=0,indexMax=0;j<n-i;j++)
{
if (p[j]>=p[indexMax])
{
indexMax=j;
}
}

t=p[n-i-1];
p[n-i-1]=p[indexMax];
p[indexMax]=t;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: