基本思想 每一趟 (例如第 i +1 趟, i = 0, 1, …, n-2) 在后面 n-i 个待排序记录中选出排序码最小的记录, 作为有序序列中的第 i 个记录。待到第n-1 趟作完, 待排序记录只剩下1个,就不用再选了。
算法描述:
SelectSort.cpp
#include <iostream>
using namespace std;
int main()
{
int n;
int arr [1000];
cin >> n;
for(int i = 0 ; i < n; i++)
{
cin>>arr[i];
}
int j,k;
for(k=0;k<n-1;k++)
{
int sIndex = k;
int cur = arr[k];
//找到[k,n-1]最小的数及其下标
for(j = k;j<n;j++)
{
if(arr[j]<cur)
{
sIndex = j;
cur = arr[j];
}
}
//cout<<sIndex<<endl;
arr[sIndex] = arr[k];
arr[k] = cur;
}
for(int i = 0 ; i < n; i++)
{
cout<<arr[i]<<" ";
}
return 0;
}
P.S.文章不妥指出还望指正