只用一次循环就能实现数组的排序,只是效率不是很高,算法很好懂。
/*
* 一次循环选择排序
* Author : Nonkey
* Time : 2015-08-06
*/
#include <stdio.h>
#define NR(x) (sizeof(x)/sizeof(x[0]))
#define SWAP(type,a,b) {type tmp ;tmp = a ;a = b ;b = tmp ;}
void output(int *a ,int n) ;
int main(void)
{
int a[] = {2,56,8,4,6,3,46,45} ;
int i ;
output(a,NR(a)) ;
for(i = 0 ;i < NR(a) - 1 ;)
{
if(a[i] <= a[i + 1]) i++;
else
{
SWAP(int ,a[i],a[i + 1]) ;
i = 0 ;
continue ;
}
}
output(a ,NR(a)) ;
return 0 ;
}
void output(int *a ,int n)
{
int i ;
for(i = 0 ;i < n ;i++)
printf("%d ",a[i]);
putchar('\n') ;
}
仅供大家参考 。
转载于:https://blog.51cto.com/nonkey/1682446