-->
当前位置:首页 > 题库

函数题:二分查找(含排序)

Luz4年前 (2022-09-15)题库537
本题要求实现两个函数:(1)排序;(2)二分查找

先利用排序算法将数据按关键字从小到大排序,再对排序后的数据进行二分查找

### 函数接口定义:
c++
void Sort(List L); //对用户传入的线性表进行排序
int BinarySearch( List L,int X ); //查找X,如果查找成功返回对应的数组下标位置;查找失败,则返回NotFound

其中List结构定义如下:
c++
struct LNode{
int Data[MAXSIZE]; //Data为待排序序列数组
int Last; //Last为最后一个元素的数组下标
};
typedef struct LNode *List;


### 裁判测试程序样例:
c++
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10
#define NotFound -1

struct LNode{
int Data[MAXSIZE]; //Data为待排序序列数组
int Last; //Last为最后一个元素的数组下标
};
typedef struct LNode *List;

void Sort(List L);
int BinarySearch( List L,int X );

List Create()
{
List L;
L = (List)malloc(sizeof(struct LNode));
int j = 0,n,ch;

scanf("%d",&n);
for(j=0;j<n;j++)
{
scanf("%d",&ch);
L->Data[j] = ch;
}
L->Last = n-1;
return L;
}

int main()
{
List L;
int x,p;

L = Create();
scanf("%d", &x); //输入要查找的关键字

Sort(L);

p = BinarySearch(L,x);

if(p != -1){
printf("所查找数据的位置为:%d",p);
}else{
printf("NotFound");
}

return 0;
}
/* 请在这里填写答案 */


### 输入样例1:
in
8
99 66 45 33 37 10 22 13
20


### 输出样例1:
out
NotFound


### 输入样例2:
in
8
99 66 45 33 37 10 22 13
13


### 输出样例2:
out
所查找数据的位置为:1






答案:若无答案欢迎评论