//选择排序
#include<stdio.h>
#define N 10
void printAaary(int *a,int n)//打印数组
{
int i=0;
for(i=0;i<n;i++)
printf("%5d",a[i]);
}
void sort(int a[],int n)//简单排序算法
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]<a[j]){ //从大到小
t=a[i];a[i]=a[j];a[j]=t;
}
}
int main()
{
int a[N],i;
srand(time(0));//随机种子
for(i=0;i<N;i++)
a[i]=rand()%21;//产生0-20的随机数
printf("排序前:\n");
printAaary(a,N);
sort(a,N);
printf("\n排序后:\n");
printAaary(a,N);
}
对算法稍作改进:
//选择排序的改进
#include<stdio.h>
#define N 10
void printAaary(int *a,int n)//打印数组
{
int i=0;
for(i=0;i<n;i++)
printf("%5d",a[i]);
}
void sort(int a[],int n)//简单排序算法的改进
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=k+1;j<n;j++)
if(a[k]<a[j])k=j; //从大到小排序
if(k!=i){
t=a[k];a[k]=a[i];a[i]=t;
}
}
}
int main()
{
int a[N],i;
srand(time(0));//随机种子
for(i=0;i<N;i++)
a[i]=rand()%21;//产生0-20的随机数
printf("排序前:\n");
printAaary(a,N);
sort(a,N);
printf("\n排序后:\n");
printAaary(a,N);
}