常用查詢法 C語言

2021-10-10 18:57:13 字數 2920 閱讀 9915

原理:

順序查詢是非常簡單常用的查詢演算法,基本思路:從第乙個元素m開始逐個與需要查詢的元素x進行比較,當比較到元素值相同(即m=x)時返回元素m的下標,如果比較到最後都沒有找到,則返回-1。

**展示:

#include

void

main()

; int len=

sizeof

(arr)

/sizeof

(arr[0]

);for(i=

0;i)printf

("\n");

for(i=

0;i<

3;i++

)//連續查詢三個資料

}void

find

(int arr[

],int len,int m)

}}

執行結果:

原理:首先,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

假設其陣列長度為n,其演算法複雜度為o(log(n)。

**展示:

方法一(遞迴查詢)

#include

#include

int main()

; int left=0;

int right=

sizeof

(arr)

/sizeof

(arr[0]

)-1;

selectsort

(arr,right)

;for

(i=0

;i<=right;i++

)printf

("\n");

printf

("請輸入要查詢的資料:");

scanf

("%d"

,&finder)

;find

(arr,left,right,finder)

;return0;

}void

selectsort

(int arr[

],int right)

}//保證最小值儲存在陣列arr中

temp=arr[i]

; arr[i]

=arr[minindex]

; arr[minindex]

=temp;}}

void

find

(int arr[

],int left,int right,int finder)

if(finder>arr[mid]

)else

if(finder

)else

}

方法二

#include

int main()

; int len=

sizeof

(arr)

/sizeof

(arr[0]

);int key,i,j;

for(i=

0;i)printf

("\n");

printf

("請輸入要查詢的資料:");

scanf

("%d"

,&key)

; j=

search

(arr,len,key)

;//返回陣列的下標

if(j>0)

else

return0;

}int search

(int arr[

],int len,int key)

else

if(arr[mid]

else

}return-1

;}

執行結果:

原理:在一維陣列中,有多組重複的資料,但是該陣列中存在幾個單一的資料,需要找出。採取標記法,將重複的資料所在的陣列標記置0,最後在遍歷陣列,將標記為1的陣列輸出即可。

**展示:

#include

void

find

(int arr[

],int len)

;int main()

; int len=

sizeof

(arr)

/sizeof

(arr[0]

);find

(arr,len)

;return0;

}void

find

(int arr[

],int len)}if

(flag)

printf

("%d\n"

,arr[i]);

}}

執行結果:

1、順序查詢法

該演算法的時間複雜度為o(n),如果資料量很大時查詢效率會很低。

2、折半查詢發

必須採用順序儲存結構

必須按關鍵字大小有序排列。

折半查詢法的優點是比較次數少,查詢速度快,平均效能好。其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。

3、單一數字查詢法

可以同查詢多個單一的資料,效率較高。

C語言折半查詢法

include int find int x,int y,int n int main void int a int b 12 int f f find b,a,c if f 1 printf can not find element b in arry a n else printf find e...

C語言二分查詢法

參考了c語言中折半查詢法 二分法 的實現 先附上 includeint binsearch int arr,int len,int key 折半查詢法 二分法 int low 0 定義初始最小 int high len 1 定義初始最大 int mid 定義中間值 while low high mi...

C語言二分法查詢法

c語言 二分查詢法 所謂的二分查詢法,其實是一種有序的查詢方法,也稱折半查詢 binary search 如果是無序的則要先進行排序操作。基本思想是 目標值通過與中間元素比較,可分為三種情況 第一種情況 目標值與中間元素相等,查詢結束 第二種情況 目標值比中間元素大,則把後半部分的中間元素與目標值比...