查找之折半查找

来源:互联网 发布:c语言产生0 1的随机数 编辑:程序博客网 时间:2024/06/05 05:01
#include<stdio.h>#define N 10void QuickSort(int a[],int left, int right);int BinSearch(int a[], int low, int high, int key);int main(){int a[N] = {2,8,4,9,7,6,5,3,1,0};int j = 0, i;QuickSort(a, 0, sizeof(a)/sizeof(a[0])-1);i = BinSearch(a, 0, N-1, 6);printf("%d\n", i);for(j = 0; j < N; j++){printf("%d ",a[j]);}printf("\n");return 0;}//折半查找int BinSearch(int a[], int low, int high, int key){while(low <= high){int mid = (low + high) / 2;if(a[mid] < key)low = mid + 1;else if(a[mid] > key)high = mid - 1;elsereturn mid;  //查找成功} return -1; //查找失败}void QuickSort(int a[],int left, int right){int key = a[left];int i = left;int j = right;if(left >= right){return;}while(i < j){while(i<j && a[j] >= key){j--;}a[i] = a[j];while(i<j && a[i] <= key){i++;}a[j] = a[i];}a[i] = key;QuickSort(a, left, i-1);QuickSort(a, i+1, right);}

0 0
原创粉丝点击