这是我目前已知的排序的2种方式,一种借助中介数组,本身数组元素个数不断减少最大值元素再来挑选剩余的最大值;
另一种不借助中介数组,通过两两比较将最大值元素提到前端,通过for循环增大i值来避免再次碰到最大值元素,再挑选剩余的最大值。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num[10], max[10] = {}, s;
printf("请输入:\n");
for (int i = 0; i <= 9; i++)
{
scanf_s("%d", &num[i]);
}
for (int i = 0; i <= 9; i++)
{
for (int j =0; j <= 9; j++)
{
if (max[i] < num[j])
{
max[i]=num[j];
s = j;
}
}
printf("%d", max[i]);
for (int k = s; k <= 10 - i; k++)
{
num[k] = num[k + 1];
}
}
system("pause");
return 0;
}
/*int main()
{
int i, j, p, q, s, a[10];
printf("input 10 numbers:\n");
for (i = 0; i < 10; i++)
{
scanf_s("%d", &a[i]);
}
for (i = 0; i < 10; i++)
{
// p = i;
// q = a[i];
for (j = i + 1; j < 10; j++)
{
// if (q < a[j])
// {
// p = j;
// q = a[j];
// }
// if (i != p)
// {
// s = a[i];
// a[i] = a[p];
// a[p] = s;
// }
if (a[i] < a[j])
{
s = a[i];
a[i] = a[j];
a[j] = s;
}
}
printf("%d", a[i]);
}
system("pause");
return 0;
}*/
网友评论