博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++STL之归并排序
阅读量:6685 次
发布时间:2019-06-25

本文共 1502 字,大约阅读时间需要 5 分钟。

hot3.png

/*******************************mergeSort******************************/#include "stdafx.h"#include 
using namespace std;template 
void mergeSort(vector
& vec){ vector
 tempVec(vec.size()); mergeSort(vec, tempVec, 0, vec.size()- 1);}template 
void mergeSort(vector
& vec, vector
 tempVec, int left, int right){ if (left < right) { int center = (left + right)/2; mergeSort(vec, tempVec, left, center); mergeSort(vec, tempVec, center+1, right); mergeFunc(vec, tempVec, left, center+1 , right);  //合并 }};//合并函数template 
void mergeFunc(vector
& vec, vector
 tempVec, int left, int  Pos,int right){ int leftPos = left;          //左边序列的位置,初始为左序列起点 int leftEnd = Pos-1 ;    //左边序列的终点    int rightPos = Pos;           //右边序列的位置,初始为右序列起点 int rightEnd = right; //右边序列的终点 int tempPos = left;         //临时数组的位置,初始为临时数组的起点 int numElements = right - left + 1;          //数组元素的个数 //两段数组合并 //两段数组已有序 while (leftPos <= leftEnd && rightPos <= rightEnd) //左边数组和右边数组都没有到终点 { //比较左边数组和右边数组值的大小 //把较小者放入临时数组 if (vec[leftPos] <= vec[rightPos])            { tempVec[tempPos++] = vec[leftPos++]; } else tempVec[tempPos++] = vec[rightPos++]; } // 只剩一个序列时,直接复制到临时数组 while (leftPos <= leftEnd) { tempVec[tempPos++] = vec[leftPos++]; } while (rightPos <= rightEnd) { tempVec[tempPos++] = vec[rightPos++]; } //将临时数组的值复制回源数组 int i = 0; for (; i< numElements; i++, rightEnd--)  //这里从后向前复制,因为前面有很多垃圾数据 { vec[rightEnd] = tempVec[rightEnd]; }}

转载于:https://my.oschina.net/u/1782374/blog/368246

你可能感兴趣的文章
寻找最大的K个数,Top K问题的堆实现
查看>>
自动发布工具应该具备的11个标准特征
查看>>
页面设计四大基本原则
查看>>
2016及以后的自动化测试趋势 -《测试技术六月刊》
查看>>
基于Angular创建后台数据模拟(译)
查看>>
Spring中bean配置的继承
查看>>
用JSP实现学生查询
查看>>
企业网站怎么建设
查看>>
数据库和MySQL相关面试题目
查看>>
Yii 框架学习--01 框架入门
查看>>
All Things OpenTSDB
查看>>
android 网络通信框架volly
查看>>
二分查找算法及其变种
查看>>
一个泛型冒泡排序的实现
查看>>
大型分布式网站架构设计与实践 第一章《面向服务的体系架构(SOA)》
查看>>
[From OpenBSD Man Page]PFSYNC
查看>>
hdu 5131 Song Jiang&#39;s rank list 【2014ACM/ICPC亚洲区广州站-重现赛】
查看>>
JS笔记(20): JS中的同步编程和异步编程
查看>>
那几个题(没懂的地方留言)
查看>>
如何改变UITableViewCell的选中样式(颜色)?storyboard上cell的selection不可用?
查看>>