谁帮忙做一个关于多关键字排序的程序设计问题

来源:百度知道 编辑:UC知道 时间:2024/05/23 18:22:41
我这学期需要作一个数据结构的课程设计是关于多关键字排序的,具体如下:
问题描述:了解多关键字的使用范围,并实现对牌照按多关键字排序后的快速查找.为加快速度需先对数据记录按关键字排序,在汽车数据模型中,汽车是关键字,而且是具有结构特点的一类关键字.因为汽车牌照是数字,字母和汉字混编的,例如:AD7328.这种记录集合是一个适于利用多关键字进行排序的典型例子.
基本任务:(利用链式基数排序方法实现排序.(2)在排序的基础上,利用二分查找的思想,实现对这批汽车记录按关键字的查找

我们要求是用的语言环境是VC++6.0
547309562@qq.com

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

#define RADIX 101 //基数,分数有 101 种可能
#define K 3 //关键字,有 3 个关键字

struct tagMark
{
int key[K]; //有 K 个关键字
}a[8] = {{1,2,3}, {0,2,3}, {5,4,6}, {6,2,6}, {4,4,1}, {0,1,4},
{60,30,6}, {60,20,6}};

/*a:待排序的数组地址
size:元素数量
radix:基数
k:关键字数量
*/

void LSDSort(struct tagMark *a, int size, int radix, int k)
{
int *cnt = (int *)malloc(sizeof(int) * radix), i;
struct tagMark *tmp = (struct tagMark *)malloc(sizeof(struct tagMark) * size); //待排序的记录的数量
while (k--)
{
for (i = radix; i >= 0; --i)
cnt[i] = 0;
for (i = size; i > 0; )
++cnt[a[--i].key[k]];
for (i = 0; i < radix; ++i)
cnt[i + 1] += cnt[i];

//分配
for (i = size; i > 0; )
{