1. 程式人生 > >01-復雜度3 二分查找

01-復雜度3 二分查找

導致 binarys post color 最後一個元素 bin 元素 clas right

  這道題是一道函數題,題目給好相應接口讓完成該子函數。給定的函數接口和結構體定義如下:

#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; /* 保存線性表中最後一個元素的位置 */
};

Position BinarySearch( List L, ElementType X );

  可以看出是要完成對用鏈表存儲的一個線性表進行二分查找,完成程序如下:

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

  需要註意的一點是while循環條件需是Left <= Right,否則兩者指同一個數時會不進入循環判斷就直接認為“NotFound”,導致結果不正確。

01-復雜度3 二分查找