#include<cstdio>
//选择排序,n表示数组a中有几个数。
void downchoose(int &n,int a[])//从大到小排序
{
int max,min;
for (int i=0;i<n/2-1;i++)
{
max=i;
min=i;
//找最大最小数编码
for (int j=i;j<n-i;j++)
{
if(a[min]>a[i]) min=i;
if(a[max]<a[i]) max=i;
}
//交换最大最小两数位置
int q=a[max];
a[max]=a[0];
a[0]=q;
int p=a[min];
a[min]=a[n-1];
a[n-1]=p;
}
}
void upchoose(int &n,int a[])//从小到大排序
{
int max,min;
for (int i=0;i<n/2-1;i++)
{
max=i;
min=i;
for (int j=i;j<n-i;j++)
{
if(a[min]>a[i]) min=i;
if(a[max]<a[i]) max=i;
}
int q=a[max];
a[max]=a[n-1];
a[n-1]=q;
int p=a[min];
a[min]=a[0];
a[0]=p;
}
}
这是优化后选择排序的函数,选择排序方便,在低级排序算法中算快的,选最大最小,与首尾互换 ,直到全部换完为止。
算法简单,时间复杂度较高。