比较计数:用比较计数法对结构数组a按字段num进行升序排序,num的值从键盘中输入。结构体个数由宏定义N给出。 定义结构体order,用来存储数据及其排序,并定义结构体数组a,代码如下: struct order/*定义结构体用来存储数据及它的排序*/ { int num; int con; }a[20]; 程序运行结果示例: 24 52 78 31 21 各数的顺序是: 24 1 52 3 78 4 31 2 21 0 输入格式:%d 输出提示:"各数的顺序是:\n" 输出格式:"%3d%3d\n"
#include<stdio.h>
#define N 5
struct order/*定义结构体用来存储数据及它的排序*/
{
int num;
int con;
}a[20];/*定义结构体数组a*/
void main()
{
int i,j;
for(i=0;i<N;i++)
{
scanf("%d",&a[i].num);/*输入要进行排序的5个数字*/
a[i].con=0;
}
for(i=0;i<N-1;i++)
{
for(j=i+1;j<N;j++)
{
if(a[i].num<a[j].num)/*对数组中的每个元素和其他元素比较*/
a[j].con++;/*记录排序号*/
else
a[i].con++;
}
}
printf("各数的顺序是:\n");
for(i=0;i<N;i++)
printf("%3d%3d\n",a[i].num,a[i].con);/*将数据及其排序输出*/
}
一开始将con全部初始化为0,使用与交换法排序类似的方法,比较相邻的数的大小,大的数con+1,通过循环遍历整串数据,最大的con就为4,以此类推。