数据结构的排序

使用qsort函数:

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

//数据结构定义
typedef struct
{
	char str[10];	//一些成员
	//..............//其他一些成员
	//..............//其他一些成员
	int key;		//需要比较的“键”
}MY_TYPE;


//产生于【M,N】之间区间上的函数
int my_rand(int M,int N)  
{  
    return (int)((double)rand()/(double)RAND_MAX*(N-M+1)+M);  
}  

//比较函数
int intcmp(const void *x, const void *y)
{
	MY_TYPE *M1 = (MY_TYPE *)x;
	MY_TYPE *M2 = (MY_TYPE *)y;

	if (M1->key > M2->key)
	{
		return 1;
	}
	else if (M1->key < M2->key)
	{
		return -1;
	}
	else
	{
		return 0;
	}

}
void main()
{
	//定义10个自定义数据结构变量
	MY_TYPE mt[10];
	memset(mt, 0x00, sizeof(mt));

	//产生10个结构变量,每个变量的Key是【1000~9999】之间的随机数
	int i=0;
	int tmp = 0;
	char strtmp[10] = {0};
	for(; i<10; i++)
	{
		tmp = my_rand(1000, 9999);

		_itoa( tmp, strtmp, 10 );
		strcpy(mt[i].str, strtmp);

		mt[i].key = tmp;
	}
	
	//打印
	printf("排序前:\n");
	for(i=0; i<10; i++)
	{
		printf("%d---%s\n", mt[i].key, mt[i].str);
	}

	//排序
	qsort(mt,						//首地址
		sizeof(mt)/sizeof(mt[0]),	//排序的(结构)个数
		sizeof(mt[0]),				//每个结构的字节个数
		intcmp						//比较函数
		);


	//排序后打印
	printf("\n\n排序后:\n");
	for(i=0; i<10; i++)
	{
		printf("%d---%s\n", mt[i].key, mt[i].str);
	}


}

输出结果:

排序前:
1011---1011
6072---6072
2739---2739
8278---8278
6265---6265
5318---5318
4152---4152
9063---9063
8405---8405
7719---7719


排序后:
1011---1011
2739---2739
4152---4152
5318---5318
6072---6072
6265---6265
7719---7719
8278---8278
8405---8405
9063---9063
Press any key to continue


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值