//C++ Builder 6.0
//C++ Language
//---------------------------------------------------------------------------
#include <iostream>
#pragma hdrstop
using namespace std;
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
void select_sort(int *x, int n);
int num_x[]={12,34,5,7,90,30,44,6,100,6,5}; //待排序数组
int len_x=11;//待排序数组长度
select_sort( num_x, len_x);
for (int i=0; i<len_x; i++) //打印排序结果
{
cout<<num_x[i]<<',';
}
cout<<"End";
return 0;
}
//---------------------------------------------------------------------------
//选择排序:从小到大
//x-数组;n-数组x的长度
void select_sort(int *x, int n)
{
int i, j, min, t;
for (i=0; i<n-1; i++) //拿x[i]与后面的数比,i取值:0~n-2
{
min = i;//假设当前下标为i的数最小,以后再调整
for( j=i+1; j<n; j++) //x[j]为x[i]后面的数
{
if ( *(x+j) < *(x+min) )
{
min = j;//若后面的数比前面的小,则记录它的下标,体现“选择”思想
}
}
if (min != i) //如果i在循环中改变了,就需要交换数据;交换总是难免的
{
t = *(x+i);
*(x+i) = *(x+min);
*(x+min) = t;
}
}
}
//---------------------------------------------------------------------------