您的位置:首页 > 其它

【排序算法】之选择排序

2012-11-13 15:06 176 查看
//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;
}
}

}
//---------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: