01-Complexity 3 Binary search (20 points) Don't find the answer here

This question requires the realization of a binary search algorithm.
Function interface definition:

Position BinarySearch( List L, ElementType X );

The List structure is defined as follows:

typedef int Position;
typedef struct LNode *List;
struct LNode {
    
    
    ElementType Data[MAXSIZE];
    Position Last; /* 保存线性表中最后一个元素的位置 */
};

L is a linear table passed in by the user, in which ElementType elements can be compared by >, ==, <, and the question guarantees that the incoming data is in increasing order. The function BinarySearch needs to find the position of X in Data, that is, the array subscript (note: elements are stored starting from subscript 1). If found, return the subscript, otherwise return a special failure flag NotFound.
Sample referee test procedure:

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

#define MAXSIZE 10
#define NotFound 0
typedef int ElementType;

typedef int Position;
typedef struct LNode *List;
struct LNode {
    
    
    ElementType Data[MAXSIZE];
    Position Last; /* 保存线性表中最后一个元素的位置 */
};

List ReadInput(); /* 裁判实现,细节不表。元素从下标1开始存储 */
Position BinarySearch( List L, ElementType X );

int main()
{
    
    
    List L;
    ElementType X;
    Position P;

    L = ReadInput();
    scanf("%d", &X);
    P = BinarySearch( L, X );
    printf("%d\n", P);

    return 0;
}

/* 你的代码将被嵌在这里 */

Input example 1:

5
12 31 55 89 101
31

Output sample 1:

2

Input example 2:

3
26 78 233
31

Output sample 2:

0

Thanks to Eyre-lemon-Lang Junjie from Ningbo University for correcting the original question!

my answer

Position BinarySearch(List L, ElementType X) {
    
    
	Position high = L->Last;
	Position low = 1, mid;
	while (low <= high) {
    
    
		mid = (low + high) / 2;
		if (X == L->Data[mid]) return mid;
		else if (X < L->Data[mid]) high = mid - 1;
		else low = mid + 1;
	}
	return NotFound;
}

I didn’t expect it, I’m so excited that
Caiji can indeed harvest a lot of happiness you can’t imagine.

Guess you like

Origin blog.csdn.net/cwindyc/article/details/107093071