每天進步一點點之查詢
阿新 • • 發佈:2020-07-19
1,順序查詢
#include <bits/stdc++.h> using namespace std; #define MaxSize 100 struct ElementType{ string name; int age; }; typedef struct Node* List; struct Node{ ElementType Data[MaxSize]; int length; }; bool equal(ElementType a1, ElementType a2){ if(a1.age==a2.age && a1.name == a2.name)return true; return false; } int SequentialSearch(List Tb1,ElementType K){ int i; Tb1->Data[0]=K; for(i=Tb1->length;!equal(Tb1->Data[i],K);i--); return i;//成功返回下標,不成功返回0 }
a,設立哨兵的好處:不用判斷下標是否越界。
2,二分查詢
a,要求是陣列和有序
b,時間複雜度是log(n)
b,比較次數:
每次比較mid的值和查詢的值後,如果不相等,mid會被加1或者-1然後賦值給right(left)。
不成功時:
mid=right=left(而不是right和left相差1)
比較次數: