void sort(int array[],int n)
{ int i,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{ if(array[i]<array[j])
t=array[i];array[i]=array[j];array[j]=t; } }
用k的好处是什么?
你没有一个叫做k的变量
只有i j是循环变量,t是作为交换的中间变量。
另外,你的排序算法非但谈不到好处,而且根本不对。
我测试了下
#include <stdio.h>
void sort(int array[],int n)
{ int i,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{ if(array[i]<array[j])
t=array[i];array[i]=array[j];array[j]=t; } }
int main () {
int arr[6] = { 3, 7, 2, 9, 4, 8 };
sort(arr, 6);
int i;
for (i = 0; i < 6; i++) printf("%d ", arr[i]);
return 0;
}
输出
8 4 2 2 2 2
显然不对
之所以不对,表面原因是if下面交换的花括号忘记写了,深层次原因是你写程序良好的习惯没有培养起来,缺少缩进和正确的换行。
修改为
{t=array[i];array[i]=array[j];array[j]=t;} } }
则输出结果
9 8 7 4 3 2