01-復雜度3 二分查找
阿新 • • 發佈:2018-03-10
導致 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 二分查找