第2章:算法基础
2016-05-30 20:21
323 查看
1:插入排序:
代码如下:template<class Type> void insertionSort(vector<Type>& a) { for(typename vector<Type>::size_type i=1;i!=a.size();i++) { Type tmp=a[i]; typename vector<Type>::size_type j; for(j=i;j>=1&&tmp<a[j-1];j--) a[j]=a[j-1]; a[j]=tmp; } }
2:归并排序:
归并排序用到了分治算法,代码如下:template<class Type> void merge(vector<Type>& a,vector<Type>& tempArray, int leftPos,int rightPos,int rightEnd) { int leftEnd=rightPos-1; int tempPos=leftPos; int numElements=rightEnd-leftPos+1; while( leftPos<=leftEnd && rightPos<=rightEnd) if(a[leftPos]<=a[rightPos]) tempArray[tempPos++]=a[leftPos++]; else tempArray[tempPos++]=a[rightPos++]; while(leftPos<=leftEnd) tempArray[tempPos++]=a[leftPos++]; while(rightPos<=rightEnd) tempArray[tempPos++]=a[rightPos++]; for(int i=0;i!=numElements;i++,rightEnd--) a[rightEnd]=tempArray[rightEnd]; } template<class Type> void mergeSort(vector<Type>& a,vector<Type>& tempArray,int left,int right) { if(left<right){ int center=(left+right)/2; mergeSort(a,tempArray,left,center); mergeSort(a,tempArray,center+1,right); merge(a,tempArray,left,center+1,right); } } template<class Type> void mergeSort( vector<Type>& a) { vector<Type> tempArray(a.size()); mergeSort(a,tempArray,0,a.size()-1); }
相关文章推荐
- NoSql之Redis数据类型
- hdu-1071-The area-简单积分
- Web页面请求的历程(四)
- 用httping测试WEB页面响应时间
- Easy-题目34:119. Pascal's Triangle II
- python之路
- Dwarf Error: wrong version in compilation unit header (is 4, should be 2)
- CABasicAnimation动画--lable字体大小改变
- HDU 5713 & 2016"百度之星" 复赛(Astar Round3)1002 k个联通块
- linux文件系统启动流程 ---笔记整理
- 一定要战斗下去
- 《JavaScript学习笔记九》:延时框的实现
- pull解析
- hdu3437 划分树 区间内小于第K大的值得和
- MYSQL的创建数据表及测试数据类型
- Easy-题目33:102. Binary Tree Level Order Traversal
- 《JavaScript学习笔记八》:数字时钟的实现
- 在Ubuntu系统下装Win7并引导双系统
- Java 并发工具包 java.util.concurrent 用户指南
- libubus 数据结构介绍