原理:
順序查詢是非常簡單常用的查詢演算法,基本思路:從第乙個元素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 如果是無序的則要先進行排序操作。基本思想是 目標值通過與中間元素比較,可分為三種情況 第一種情況 目標值與中間元素相等,查詢結束 第二種情況 目標值比中間元素大,則把後半部分的中間元素與目標值比...