菜雞筆記之 二分查詢

2021-10-07 11:33:11 字數 1423 閱讀 1437

二分查詢:

前提是所有資料都已經排好序,將目標值每次跟中間的數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...