ACM经典算法之排序/查找
2015-08-18 22:49
351 查看
转自:http://blog.sina.com.cn/s/blog_93d2ceba010145er.html
一、(快速排序)
二、(希尔排序)
三、(选择法排序)
四、(二分查找)
一、(快速排序)
语法:quicksort(int l,int r,int b[]); | |
参数: | |
l: | 排序上界,开始时l=0 |
r: | 排序下界,开始时r=数组元素个数 |
b[]: | 被排序的元素 |
返回值: | null |
注意: | |
输出升序序列 | |
源程序: | |
void quicksort(int l,int r,int b[]) { int i,j,x; if(l>=r) return; i=l; j=r; x=b[i]; while(i!=j) { while(b[j]>x&&j>i) j--; if(i<j) { b[i]=b[j]; i++; } while(b[i]<x&&j>i)i++; if(i<j) { b[j]=b[i]; j--; } } b[i]=x; quicksort(l,j-1,b); quicksort(i+1,r,b); } |
语法:shellsort(int a[],int n); | |
参数: | |
n: | 数组元素个数 |
a[]: | 待排序数组 |
返回值: | null |
注意: | |
输出升序序列 | |
源程序: | |
void shellsort(int a[],int n) { int i,j,g; int temp,k; g=n/2; while(g!=0) { for(i=g+1;i<=n;i++) { temp=a[i]; j=i-g; while(j>0) { k=j+g; if(a[j]<=a[k]) j=0; else { temp=a[j];a[j]=a[k];a[k]=temp; } j=j-g; } } g=g/2; } } |
语法:sort(int t[],int n); | |
参数: | |
t[]: | 待排序数组 |
n: | 数组t[]元素的个数 |
返回值: | null |
注意: | |
输出升序序列 | |
小规模排序用 | |
源程序: | |
void sort(int t[],int n) { int i,j,k,temp; for (i=0;i<n;i++) { k=i; for (j=i;j<n;j++) if (t[j]<t[k]) k=j; temp=t[i];t[i]=t[k];t[k]=temp; } } |
语法:result=search_bin(int *t,int k); | |
参数: | |
t[]: | 待查找数组 |
k: | 查找关键字 |
返回值: | 如果k在t[]中存在,输出i:t[i]=k,否则输出-1 |
注意: | |
要求查找数组是有序升序序列 | |
源程序: | |
int search_bin(int *t,int k) { int low=1,high=10,mid; while (low<=high) { mid=(low+high)/2; if (k==t[mid]) return mid; else if (k<t[mid]) high=mid-1; else low=mid+1; } return -1; } |
相关文章推荐
- oracle存储函数之在应用程序中使用存储函数输出指定用户的基本信息
- 计算mysql内存使用
- zookeeper 简介
- 如何配置好Selenium2Library的环境
- hdu 2680 Choose the best route
- java泛型(三)、通配符的使用
- 黄聪:wordpress源码解析-目录结构-文件调用关系(转)
- 如何配置好Selenium2Library的环境
- 1.9-域名301跳转
- CC254x(cc2540/cc2541)的微信AirSync调试笔记
- 蘑菇街面试题
- RT-Thread finsh源码分析: finsh_ops.h
- UIColor,CGColor,CIColor三者的区别和联系
- scala 88 for替换map,flatmap,filtermap,for,scala,flatmap
- 1.8-默认虚拟主机
- 剑指offer 算法 (举例让抽象具体化)
- 解决SublimeText输入法不跟随的问题
- find the safest road
- hibernateTemplate和hibernateDaoSupport
- android富文本编辑器