一、简单选择排序法
1、基本思想:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并
和第i(1<=i<=n)个记录交换之。
2、相应的代码实例如下:
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
#define ARR_MAX 10 // 假设有10个数
void select_sort(int a[],int n)
{
// 简单选择排序(升序)
int j,i,temp,min;
for (i=0;i<n;i++)
{
min=i;
for (j=i+1;j<=n;j++)
{
if(a[min]>a[j])
min=j;
}
if(i!=min)
{
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
}
int main()
{
srand((unsigned)time(NULL)); // 将当前时间设置成随机函数的种子,所以每次产生的数都不一样
int t[ARR_MAX];
int i;
cout<<"排序前:";
for (i=0;i<ARR_MAX;i++)
{
t[i]=rand()%1000+1; // 随机数为1~1000
cout<<t[i]<<" ";
}
cout<<endl;
cout<<"排序后:";
select_sort(t,ARR_MAX); // 调用简单选择排序函数
for (i=0;i<ARR_MAX;i++)
{
cout<<t[i]<<" ";
}
cout<<endl;
return 0;
}
3、运行效果如下: