#include
int main(void)
{
int n, i, index, k, temp = 0;
int a[10];
printf("Enter n:");
scanf("%d", &n);
printf("Enter %d numbers:", n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
for (k = 0; k < n; k++)
{
index = k;
for (i = k + 1; i < n; i++)
{
if (a[i] > a[index])
index = i;
temp = a[index];
a[index] = a[k];
a[k] = temp;
}
}
for (i = 0; i < n; i++)
printf("%d", a[i]);
return 0;
}
这是修改了的
你的思路没错,就是在第三个for后要个大括号把
if(a[i]>a[index])
index=i;
temp=a[index];
a[index]=a[k];
a[k]=temp;括起来。
这是无序数组的方法:
#include
#include
#define N 5
int main()
{
int i, j; //循环变量
int temp; //用来交换的临时变量
int nums[N] = {16, 25, 9, 90, 23};
//外层循环控制轮数
for(i = 0; i < N - 1; i++)
{
//内层循环控制每轮的比较次数
for(j = 0; j < N - i - 1; j++)
{
//如果当前值大于后一个值,就交换
if(nums[j] > nums[j + 1])
{
temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
printf("排序后的结果是:\n");
for(i = 0; i < N; i++)
{
printf("%d\t",nums[i]);
}
return 0;
}
如果是冒泡
请将
for(i=j+1;i<10;i++)
if(a[i] {
k=i;i=j;j=k;
}
i=j;j++;
改为
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{
k=a[j];a[j]=a[j+1];a[j+1]=k;
}