1. 程式人生 > 實用技巧 >每天進步一點點之查詢

每天進步一點點之查詢

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)

    比較次數: