c语言快速排序与二分查找算法
2014-06-19 21:01
204 查看
#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; }
相关文章推荐
- 快速排序和二分查找算法的实现C语言
- C语言实现 排序源程序(包括直接插入、希尔、冒泡、快速、简单选择、堆排序)
- 快速排序C语言源程序分析
- 快速排序与二分查找算法Javascript版本
- C语言 之 快速排序
- 快速排序--C语言
- 快速排序----C语言数据结构
- 快速排序的C语言源代码与分析
- 快速排序 C语言实现
- 交换排序——冒泡排序和快速排序——C语言描述
- 归并排序,快速排序,堆排序,冒泡排序 c语言源代码
- 快速排序的C语言实现及其时间复杂度
- C语言中用qsort()快速排序
- 快速排序的C语言代码实现
- 我的C语言快速排序方法
- C语言实现基本排序算法----排序(直接插入排序,SHELL排序,冒泡排序,快速排序,简单选择排序,堆排序)
- C语言(5) - 选择排序 快速排序
- 快速排序分析与C语言实现
- C语言调用库函数实现快速排序
- 快速排序的C语言代码实现