//选择排序算法
#include<stdio.h>
//升序
void selectsort_1( int a[],int n )
{
int i,j,k,t;
//每次选出i+1小的那个数,然后放到a[i]
for( i=0;i<n-1;i++ ){
k=i;
//选出第 i+1小的数
for( j=i+1;j<n;j++ ){
if( a[j]<a[k] ){
//将较小的数的下标位置给k,在后面的循环中查看是否有比它更小的数
k=j;
}
}
//k!=i 说前面出现了比 i 这个位置小的数,且是 第 i+1 小的数
if( k!=i ){
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
}
//降序
void selectsort_2( int a[],int n )
{
int i,j,k,t;
//每次循环选出i+1大的数,然后放到a[i]
for( i=0;i<n-1;i++ ){
k=i;
//选出第 i+1大的数
for( j=i+1;j<n;j++ ){
if( a[j]>a[k] ){
//将较大的数的下标位置给k,在后面的循环中查看是否有比它更大的数
k=j;
}
}
//k!=i 说前面出现了比 i 这个位置大的数,且是 第 i+1 大的数
if( k!=i ){
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
}
int main()
{
int a[6]={2,1,34,10,45,3};
int i;
selectsort_1( a,6 );
printf("升序:");
for( i=0;i<6;i++ ){
printf("%d ",a[i]);
}
selectsort_2( a,6 );
printf("\n降序:");
for( i=0;i<6;i++ ){
printf("%d ",a[i]);
}
return 0;
}
若有错误,希望大家在评论区指正,感谢!