二分查詢:
前提是所有資料都已經排好序,將目標值每次跟中間的數mid比較,如果相等可以直接返回,如果比mid大則繼續查詢大的一邊,否則繼續查詢小的一邊。
**實現(二分查詢+讀取檔案):
檔案arctan.txt存放arctan(i)的值,i = 1,2,3,…360,輸入乙個arctani 的值查出i為多少。
# include
# include
# include
# define len 361
intmain
(void
),y;
char filename[30]
=;//read data from the file
printf
("which file do you want to read:");
scanf
("%s"
,filename)
;file_read
(filename,array,len)
;//binary search
printf
("please enter the a float number y (ps:y = arctan(x),x = 1,2,...):\n");
scanf
("%f"
,&y)
;int x =
binary_search
(array,len,y);if
(x!=0)
else
return0;
}//read file function
void
file_read
(char
* filename,
float
* array,
int array_len)
for(
int i =
1;i)fclose
(fp);}
//binary search
intbinary_search
(float
* array,
int array_len,
float y)
else
if(y
)else
if(y>array[mid])}
return0;
//return 0 if can not find the target
}
附:arctan.txt
執行結果:
查詢之二分查詢
二分查詢前提查詢的序列需要有序 十分好理解 取中間值與目標值對比查詢 注意下數值邊界 public static void main string args int arr2 int arr3 int index binarysearch arr,34 int index2 binarysearch...
查詢演算法之 二分查詢
這個例項給出了二叉搜尋演算法在9個元素的陣列arr中查詢某個目標值的過程01 2345 678 7 35812 1623 3355 例子1 查詢目標值2301 2345 678 7 35812 1623 3355 步驟1 索引範圍 0,9 索引first 0,last 9,mid 0 9 2 4 t...
查詢演算法之二分查詢
二分查詢,也是經常會問道的,以下寫法主要是針對已經排好序,且不會受到重複元素影響的陣列使用。二分查詢 param string find 要查詢的值 param array array 要查詢的陣列 return bool string function binarysearch find arra...