快速排序以及二分查找的实现
2015-10-28 10:57
316 查看
#include <stdio.h> int BinSearch(int a[],int left,int right,int key);//声明二分查找 void QuickSort(int a[],int left,int right);//声明快速排序 int main() { int a[101]; int i,n,key; printf("Please input total number:"); scanf("%d",&n); printf("Now please input %d numbers:",n); for(i=0;i<n;i++) { scanf("%d",&a[i]); } QuickSort(a,0,n-1); printf("The array after QuickSort is :\n"); for(i=0;i<n;i++) { printf("%d ",a[i]); } printf("\nPlaese input the number you want to search:"); scanf("%d",&key); int order=BinSearch(a,0,n-1,key); if(order==-1) { printf("Can not find number %d\n",key); } else { printf("The order of number %d is %d\n",key,order+1); } return 0; } void QuickSort(int a[],int left,int right) { int i=left,j=right; int key=a[left]; if(left>right) return; while(i<j) { while(a[j]>=key&&i<j) j--; a[i]=a[j]; while(a[i]<=key&&i<j) i++; a[j]=a[i]; } a[i]=key; QuickSort(a,left,i-1); QuickSort(a,i+1,right); } int BinSearch(int a[],int left,int right,int key) { int low=left,high=right,mid; if(left<=right) { mid=low+(high-low)/2; if(a[mid]==key) { return mid; } if(a[mid]>key) { return (BinSearch(a,low,mid-1,key)); } else { return (BinSearch(a,mid+1,high,key)); } } return -1; }
相关文章推荐
- Android Studio添加aar包依赖
- POJ 2395
- awk 格式化输出
- css中鼠标形状总结
- Java Thread 多线程同步、锁、通信
- 斯坦福大学公iOS 7应用开发第一课笔记--MVC模式
- C++【函数(重载/缺省参数/哑元/内联)】
- ListView中的getChildAt(int)的注意事项
- Sqlite 索引的使用、索引的优缺点
- unity 后台
- 703n路由器 刷openwrt 修改 串口双向传输和串口波特率
- iOS隐藏状态栏
- Spring MVC 多选框 绑定 Entity 中的 list 属性
- dos命令
- JS实现双击屏幕滚动效果代码
- android byte[] 转 String16进制
- DNS基本工作原理,及正反向解析和主从同步
- Linux的特殊文件系统-----
- Android中使用SDcard进行文件的读取
- Android invisible 和 gone