折半查找小程序


       折半查找必須在有序數組中使用;(大小順序)


代碼:


#include <stdio.h>
#include <stdlib.h>
int Two_Searching(int arr[], int x, int y){
	int left = 0;
	int right = y ;
	int mid = 0;
	while (left <= right){
		mid = left + ((right - left) >> 1);
		if ( arr[mid] < x){
		
			left = mid + 1;
		}
		else if (arr[mid] > x){
		
			right = mid - 1;
		}
		else{
			break;
		}
	}
	   if (left > right)
	  {
	  	return -1;
	  }
	else{
		return mid;
	}
}
int main(){
	int arr[] = {  1, 2, 3, 4, 5, 6, 7 };
	int len = sizeof(arr) / sizeof(arr[0])-1;
	int key = 0;
	scanf("%d", &key);
	int rec = 0;
	rec=Two_Searching(arr, key, len);
	if (rec == -1){
		printf("找不到該數\n");
	}
	else{
		printf("找到了下標爲%d\n", rec);
	 
	}
	system("pause");
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章