// 排序系列--选择排序.cpp : 定义控制台应用程序的入口点。
//说明:选择是本人经常用到的排序方法,因为够简单(虽然性能不是很好)
//思想:一开始就在无序序列中选第一个(或最后一个元素)元素为最小(或最大)元素,然后用后续的元素与该选定的“最小”元素进行比较
//如果满足“最小”,则记录后移,否则交换位置(一趟选择排序)
//vs2010上编译通过
#include "stdafx.h"
#include <ctime>//用于调用随机种子函数
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
using namespace std;
void SelectSort(int a[],int n)
{
for (int i=0;i<n;i++)//n趟
{
//下面是一趟选择排序
int index=i;
for (int j=i+1;j<n;j++)//将i后面的元素与i指定的元素进行比较
{
if (a[j]<a[index])//判断是否比假设的元素小,如果满足,则将该记录保存下来(替换原来的记录)
{
index=j;
}
}
if (index!=i)//判断假设的最小元素是否真的是最小的,如果不是,则交换
{
a[i]=a[i]+a[index];
a[i]=a[i]-a[index];
a[index]=a[i]-a[index];
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[20];
srand( (unsigned)time(NULL) );
for (int i=0;i<20;i++)
{
a[i]=rand()%40;
}
SelectSort(a,20);
for (int i=0;i<20;i++)
{
cout<<a[i]<<" ";
}
system("pause");
return 0;
}