创作灵感来自于学习c语言时的反思
在对数据进行从大到小排序时,正常的想法是打擂台,相邻的每个都打一遍,然后输了就交换位置,但是有一种占用更少计算的方法,就是不是一个一个换,而是先找到一群里面最大的一个,标为第一个,第二个到最后中最大的一个,标记为第二个,以此类推。
修正后的函数
#include<stdio.h>
int main()
{
void sort(int *p, int n);
int i, a[10];
printf("the inital number = \n");
for(i = 0; i < 10; i ++)
scanf("%d", &a[i]);
sort(a, 10);
printf("the sorted number is : \n");
for(i = 0; i < 10; i ++)
printf("%d\t", a[i]);
return 0;
}
void sort(int *p, int n)
{
int i, j, temp, k;
for(i = 0; i < 9; i ++)
{
for(j = i + 1; j < 10; j ++)
{k = i;
if (*(p + i) < *(p + j)) k = j;
if (k != i)
{temp = *(p + i); *(p + i) = *(p + j); *(p + j) = temp;}
}
}
}