c语言快速排序与二分查找算法

来源:互联网 发布:java中文模糊匹配算法 编辑:程序博客网 时间:2024/06/02 01:59
#include<stdio.h>int r[20];int Quick_Partition(int r[],int a,int b);int Binary_serch(int r[],int key,int n); void Quick_Sort(int r[],int s,int t);int main(void){int i=0,j=0,bi,ans;printf("请输入待排序数据:(0结束)");do{scanf("%d",&r[j]);j++;}while(r[j-1]!=0);j=j-2;Quick_Sort(r,i,j);while(i<=j){printf("%d ",r[i]);i++;}for(;;){printf("请输入您要查找的数据:(0表示结束)"); scanf("%d",&bi);if(bi==0){printf("查找结束\n");return 0; }else{ans=Binary_serch(r,bi,j);if(ans==-1){  printf("在数组中没有找到%d\n",bi);}else{ans=ans+1;          printf("查找成功\n");  printf("在数组中第%d个位置找到%d\n",ans,bi);}} }return 0;}int Quick_Partition(int r[],int a,int b){int temp;temp=r[a];while(a<b){while(a<b&&r[b]>=temp)b--;if(a<b){  r[a]=r[b];  a++;}while(a<b&&r[a]<=temp)a++;if(a<b){  r[b]=r[a];  b--;}}r[a]=temp;return a;}void Quick_Sort(int r[],int s,int t){int i;while(s<t){i=Quick_Partition(r,s,t);Quick_Sort(r,s,i-1);Quick_Sort(r,i+1,t);s++;}}int Binary_serch(int r[],int key,int n){int low=0;int high=n;int mid;while(low<=high){mid=(low+high)/2;if(key==r[mid]){return mid;}else if(key>r[mid]){low=mid+1;}else{high=mid-1;}}return -1;} 

0 0