求解,题目32:对N个记录构成的集合,用顺序表结构存储,先进性排序,在进行二分法查找

来源:百度知道 编辑:UC知道 时间:2024/07/07 11:08:01
只求原程序!C和C++语言都可以

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

#define KeyType int

typedef struct{
KeyType key;
}ElemType;

typedef struct{
ElemType *elem;
int length;
}SqTable;

//排序 len是长度
int sort(SqTable& R, int len)
{
KeyType tmpKey;
for ( int i = 1; i < len; i++)
{
if(R.elem[i].key < R.elem[i - 1].key)
{
tmpKey = R.elem[i].key;
R.elem[i].key = R.elem[i - 1].key;
for ( int j = i - 1; (tmpKey < R.elem[j].key);j--)
{
R.elem[j + 1].key = R.elem[j].key;
}
R.elem[j + 1].key = tmpKey;
}
}
return 1;
}

//二分查找, K是查找的关键字,查找成功返回素组下标,不成功返回 -1
int BinSearch(SqTable& R, int low, int high, KeyType K)
{
if( low > high)
{
return -1;
}
else
{
int mid = (low + high) / 2;
if (R.elem[mid].key == K)
{
return mid;<