您的位置:首页 - 教程 - C++ - 正文
C++实现选择排序

选择排序是蛮力法在排序算法中的一个重要运用,选择排序开始的时候,我们扫描整个列表,找到它的最小元素然后和第一个元素交换,将最小元素放到它在有序表的最终位置上。然后我们从第二个元素开始扫描列表,找到最后n-1个元素的最小元素,再和第二个元素交换位置,把第二小的元素放在它最终的位置上。如此循环下去,在n-1遍以后,列表就排好序了。

下面给出算法的伪代码:

SelectSort(A[0...n-1])

for i<-0 to n-2 do

min <- i

for j<- i+1 to n-11 do 

if A[j]<A[min]

min <- j

swap A[j] and A[min]

 

用C++实现如下:

#include <iostream>
//选择排序
//Shoval
using namespace std;

void SelectSort(auto a[],int n)
{
for(int i=0;i<n-1;i++)
{
int min=i;
for (int j=i;j<n;j++)
{
if(a[j]<a[min])
min=j;
}
swap(a[i],a[min]);
}
}
int main(int argc, char** argv) {
int a[10]={4,5,7,1,8,2,9,0,3,6};
char b[8]="sfvcr";
cout<<"排序前的数组是:"<<endl;
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
for(int i=0;i<5;i++)
cout<<b[i]<<" ";
cout<<endl;
cout<<endl;
cout<<"排序后的数组是:" <<endl;
SelectSort(b,5);
SelectSort(a,10);
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
for(int i=0;i<8;i++)
cout<<b[i]<<" ";
return 0;
}

运行结果是:

可见,排序中数组参数的数据类型的auto使该程序可以对字母进行排序。


评论: