用C语言编程部分排序 (急)

来源:百度知道 编辑:UC知道 时间:2024/05/14 17:47:24
要求编制函数 jsSort(),对任意几个在1000~9999之间的数,按每个数的后三位的大小进行升序排列,然后取出满足此条件的前5个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行降序排列。(急)

#include <stdlib.h>
#include <stdio.h>

void jsSort(int *a, int s)
{
int i, j, k, t, n1, n2;

for (i = 0; i < s-1; ++i)
{
k = i;

for (j = i + 1; j < s; ++j)
{
n1 = a[k] % 1000;
n2 = a[j] % 1000;

if (n1 > n2)
{
k = j;
}
else if (n1 == n2)
{
if (a[k] < a[j])
k = j;
}
}

if (k != i)
{
t = a[i];
a[i] = a[k];
a[k] = t;
}
}
}

void main()
{
int a[] = {1000, 2000, 3000, 1200, 2300, 3400, 4500, 5500, 6500};
int i;

jsSort(a, 9);

for (i = 0; i < 8; ++i)
printf("%d ", a[i]);

printf("%d\n", a[i]);
system("PAUSE");
}

把冒泡排序里面数据比较的那句,改成两数%1000的结果来比较就行了.

将任意1000——9999的数除以1000取余,有冒泡排序排列后放入数组,最后再定义新的数组bb[],用FOR(