您的位置:首页 > 其它

排序算法-------简单选择排序

2011-10-02 09:41 260 查看
选择排序原理:循环查找n个元素中最小的元素,与第一个元素进行交换;继续查找n-1个元素中最小的元素,与第二个元素交换.....直至完成

简单选择排序

#include <iostream>
using namespace std;

//元素交换
void swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}

/*///////////////////////////////////////////////
简单选择排序
*/
void SelectSort(int *a,int len)
{
int i,j,pos,temp;
for(i=0;i<len-1;i++)
{
pos=i;
temp=a[i];
for(j=i+1;j<len;j++)
{
if(a[j]<temp)      //若a[i]小于后面的元素,则保存较小元素的下标,
//并且将该元素的值保存在temp中,继续比较
{
pos=j;
temp=a[j];
}
}
swap(a[i],a[pos]);
}
for(i=0;i<len;i++)
cout<<a[i]<<" ";
cout<<endl;
}
/////////////////////////////////////////////////

int main()
{
int n,i,a[20];
cout<<"请输入数组元素n:"<<endl;
cin>>n;
cout<<"请输入"<<n<<"个元素:"<<endl;
for(i=0;i<n;i++)
cin>>a[i];
SelectSort(a,n);
return 0;
}


相比于冒泡排序算法,由于选择排序每次寻找最小元素使用的是数组下标作为标记,直到最后才进行交换移动的,所以减少了交换的次数。

需要的比较次数是固定的:n-1+n-2+n-3+…+1=n(n-1)/2次。

需要的交换次数:最好情况下为0次,最差情况下需要交换n-1次,总得时间复杂度为O(n^2)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: