简单选择排序是每次选择第i小的元素,放到第i位置。
第i小的元素只需要从未排序的元素中选出最小的就是。
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
#define maxn 20
typedef struct SqList
{
int r[maxn];
int Length;
}SqList;
void InitSqList(SqList &L,int n)
{
int num;
for(int i=0; i<maxn; i++)
L.r[i] = 0;
for(int i=1; i<=n; i++)
{
cin>>num;
L.r[i] = num;
}
L.Length = n;
}
void PrintSqList(SqList L)
{
for(int i=1; i<=L.Length; i++)
cout<<L.r[i]<<" ";
}
int SelectMax(SqList &L,int n)
{
int index = n;
for(int k=n+1; k<=L.Length; k++)
if(L.r[k]<L.r[index]) index=k;
return index;
}
void SelectSort(SqList &L)
{
int temp;
int index;
for(int i=1; i<L.Length; i++)
{
index = SelectMax(L,i);
if(i!=index)
{
temp = L.r[i];
L.r[i] = L.r[index];
L.r[index] = temp;
}
}
}
int main()
{
SqList L;
int n;
cin>>n;
InitSqList(L,n);
SelectSort(L);
PrintSqList(L);
return 0;
}