c语言 正序 倒序 排序方法 写代码

不写代码不采用

冒泡排序 int [] num = new int []{1,4,2,3,6}; int temp; //设置 中间变量 将利用此变量进行 位置调换 for(int i = 0 ; i < num.length ; i++ ){ for(int j = 1 ; j < i ; j ++){ if( num[j]>num[j+1]){ //更换判断符号 实现正序 倒序排序 temp = num[j]; //如果 num[0] 大于 num[0+1] 时 将 大的赋给中间变量 num[j] = num[j+1]; //将第二个位置num [0+1] 在赋给 num[0]第一个位置 num[j+1] = temp; //最后将 中间变量也就是 最大值 赋给 第二个值 } } } // 外层循环结束后 数组变为 int [] num = new int []{1,2,3,4,6}; 了 剩下的只要输出就好了 for(int i = 0 ; i < num.length ; i++){ System.out.println(num[i]); //循环输出 数组内数字 } }
} 我用 java 写的 感觉 java可读性高点 c语言实现思路一样
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-03
#include <stdio.h>

void sort(int* a, int n, int (*cmp)(int, int))
{
int i = 0, t;
while(i < n)
if(i == 0 || cmp(a[i], a[i-1]))
++i;
else {
t = a[i];
a[i] = a[i-1];
a[--i] = t;
}
}

int asc(int a, int b)
{
return a > b;
}

int desc(int a, int b)
{
return a < b;
}

void print(char* msg, int* a, int* b)
{
printf(msg);
while(a != b)
printf("%d ", *a++);
putchar('\n');
}

int main()
{
int a[] = { 2,9,0,3,6,5,1,8,4,7 };
sort(a, 10, asc);
print("升序: ", a, a + 10);
sort(a, 10, desc);
print("降序: ", a, a + 10);
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网