6-1 二分查詢 (20分) PTA 資料結構
本題要求實現二分查詢演算法。
函式介面定義:
Position BinarySearch( List L, ElementType X );
其中List結構定義如下:
typedef int Position;
typedef struct LNode *List;
struct LNode {
ElementType Data[MAXSIZE];
Position Last; /* 儲存線性表中最後一個元素的位置 */
};
L是使用者傳入的一個線性表,其中ElementType元素可以通過>、==、<進行比較,並且題目保證傳入的資料是遞增有序的。函式BinarySearch要查詢X在Data中的位置,即陣列下標(注意:元素從下標1開始儲存)。找到則返回下標,否則返回一個特殊的失敗標記NotFound。
裁判測試程式樣例:
#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;
}
/* 你的程式碼將被嵌在這裡 */
輸入樣例1:
5
12 31 55 89 101
31
輸出樣例1:
2
輸入樣例2:
3
26 78 233
31
輸出樣例2:
0
AC程式碼(1)
Position BinarySearch( List L, ElementType X ){
Position mid, low = 1, high = L->Last;
while(low<=high){
mid = (low + high) / 2;
if (X < L->Data[mid]) high = mid - 1;
else if (X > L->Data[mid]) low = mid + 1;
else return mid;
}
return NotFound;
}
你讓我用二分我就用豈不是很沒面子(2)
(普通的順序查詢居然也能過)
Position BinarySearch( List L, ElementType X ){
for(int i=1;i<=L->Last;i++){
if(X==L->Data[i]){return i;}
}
return NotFound;
}
相關文章
- 資料結構與演算法-二分查詢資料結構演算法
- 【資料結構與演算法】—— 二分查詢資料結構演算法
- [資料結構] 二分查詢 (四種寫法)資料結構
- 資料結構與演算法整理總結---二分查詢資料結構演算法
- 資料結構和演算法之——二分查詢下資料結構演算法
- 資料結構和演算法之——二分查詢上資料結構演算法
- 演算法與資料結構——二分查詢插入點演算法資料結構
- 23.資料結構 查詢資料結構
- 重學資料結構(八、查詢)資料結構
- 【PHP資料結構】雜湊表查詢PHP資料結構
- Java資料結構(十五)—— 多路查詢樹Java資料結構
- PTA 雙端佇列 資料結構佇列資料結構
- 查詢——二分查詢
- 基礎二分查詢總結
- 資料結構和演算法面試題系列—二分查詢演算法詳解資料結構演算法面試題
- 【Java資料結構與演算法】簡單排序、二分查詢和異或運算Java資料結構演算法排序
- 樹狀資料結構儲存方式——查詢篇資料結構
- 資料結構——迴圈佇列PTA習題資料結構佇列
- 二分查詢(一)——純粹的二分查詢
- 二分查詢
- 資料結構-二分搜尋樹資料結構
- 資料結構之查詢(順序、折半、分塊查詢,B樹、B+樹)資料結構
- 資料結構與演算法:查詢演算法資料結構演算法
- 查詢演算法__二分查詢演算法
- 查詢最佳化——查詢樹結構
- 二分查詢法
- PHP二分查詢PHP
- leetcode——二分查詢LeetCode
- leetcode -- 二分查詢LeetCode
- PostgreSQL 原始碼解讀(205)- 查詢#118(資料結構RangeTblEntry)SQL原始碼資料結構
- 資料結構與演算法-二叉查詢樹資料結構演算法
- 資料結構與演算法 第五章 查詢資料結構演算法
- 查詢演算法之二分查詢演算法
- 【總結】二分查詢 —— 一種減而治之的查詢方法(1)
- 二分查詢 | 二分查詢的一種推薦寫法
- PTA練習7 二叉樹(1)——資料結構二叉樹資料結構
- 減治思想——二分查詢詳細總結
- 從零開始學資料結構和演算法 (五) 分治法 (二分查詢、快速排序、歸併排序)資料結構演算法排序