查詢演算法初學一

2021-07-09 09:31:30 字數 2447 閱讀 8337

/* 無哨兵順序查詢,a為陣列,n為要查詢的陣列個數,key為要查詢的關鍵字 */

int sequential_search(int *a,int n,int key)

return 0;

}

優化

/* 有哨兵順序查詢 */

int sequential_search2(int *a,int n,int key)

return i;

}

/* 折半查詢 */

int binary_search(int *a,int n,int key)

}return 0;

}

/* 插值查詢 */

int interpolation_search(int *a,int n,int key)

return 0;

}

關鍵:插值查詢是根據要查詢的關鍵字key與查詢表中最大最小記錄的關鍵字比較後的查詢方法,其核心是插值的計算公式(key-a[low])/(a[high]-a[low])

/* 斐波那契查詢 */

int fibonacci_search(int *a,int n,int key)

else if (key>a[mid])

else

}return 0;

}

測試** vc++6.0下

#include "stdio.h"    

#include "stdlib.h"

#include "io.h"

#include "math.h"

#include "time.h"

#define ok 1

#define error 0

#define true 1

#define false 0

#define maxsize 100 /* 儲存空間初始分配量 */

typedef int status; /* status是函式的型別,其值是函式結果狀態**,如ok等 */

int f[100]; /* 斐波那契數列 */

/* 無哨兵順序查詢,a為陣列,n為要查詢的陣列個數,key為要查詢的關鍵字 */

int sequential_search(int *a,int n,int key)

return 0;

}/* 有哨兵順序查詢 */

int sequential_search2(int *a,int n,int key)

return i;

}/* 折半查詢 */

int binary_search(int *a,int n,int key)

}return 0;

}/* 插值查詢 */

int interpolation_search(int *a,int n,int key)

return 0;

}/* 斐波那契查詢 */

初學A 演算法

一 介紹a 演算法 學過資料結構的人都知道,圖的搜尋演算法主要有深度優先演算法和廣度優先演算法。廣度優先是從初始節點一層一層向下找,直到找到目標為止。深度優先是按照一定的順序前查詢完節點的乙個分支,再查詢另乙個分支,以至找到目標為止。在廣度優先中,整個搜尋好似乙個圓形向外展開,直到到達目標節點,這樣...

查詢演算法(一)順序查詢

順序查詢 線性查詢 最基本的查詢技術,過程 從表中的第乙個 或最後乙個 記錄開始,逐個進行記錄的關鍵字和給定值比較,若某個記錄的關鍵字和給定值相等,則查詢成功,找到所查的記錄 如果直到最後乙個 或第乙個 記錄,其關鍵字和給定值比較都不等時,則表中沒有多查的記錄,查詢不成功。實現int sequenc...

KMP演算法初學

kmp演算法是一種改進的模式匹配演算法,與樸素的模式演算法 即模式串與主串逐一匹配,匹配失敗模式串整體右移一位再次逐一匹配至完全匹配成功 相比,主串中指標無需回溯,時間複雜度為o n m n為主串長,m為模式串長 樸素為o n m 一 next陣列kmp演算法中多了乙個next陣列,要用kmp演算法...