标签:
选择排序是蛮力法在排序算法中的一个重要运用,选择排序开始的时候,我们扫描整个列表,找到它的最小元素然后和第一个元素交换,将最小元素放到它在有序表的最终位置上。然后我们从第二个元素开始扫描列表,找到最后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使该程序可以对字母进行排序。
标签:
原文地址:http://www.cnblogs.com/wei007/p/5652066.html