博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c/c++实现归并排序
阅读量:2089 次
发布时间:2019-04-29

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

归并排序 -

采用了分治和递归的思想,递归&分治-排序整个数列如同排序两个有序数列,依次执行这个过程直至排序末端的两个元素,再依次向上层输送排序好的两个子列进行排序直至整个数列有序(类比二叉树的思想,from down to up)。

时间复杂度:O(NlogN)   稳定性:稳定

/*归并排序*///排序两个有序数列void mergeSortInOrder(vector
&arr, int bgn, int mid, int end){
int *pBuf = new int[end - bgn]; int *pTemp = pBuf; int lindex = bgn; int rindex = mid; while ((lindex < mid) && (rindex < end)) *(pTemp++) = (arr[lindex] < arr[rindex]) ? arr[lindex++] : arr[rindex++]; while (lindex < mid) *pTemp++ = arr[lindex++]; while (rindex < end) *pTemp++ = arr[rindex++]; //pTemp -> arr pTemp = pBuf; for (int i = bgn; i < end; i++) arr[i] = *pTemp++; delete []pBuf;}//UpToDown To DownToUpvoid mergeSort(vector
&arr, int bgn, int end){
//数组arr空or仅有一个元素则退出 if (bgn >= end - 1) return; int mid = (bgn + end) / 2; mergeSort(arr, bgn, mid); mergeSort(arr, mid, end); mergeSortInOrder(arr, bgn, mid, end);}

转载地址:http://pimqf.baihongyu.com/

你可能感兴趣的文章
Java集合详解2:一文读懂Queue和LinkedList
查看>>
Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题
查看>>
Java集合详解5:深入理解LinkedHashMap和LRU缓存
查看>>
Java集合详解6:这次,从头到尾带你解读Java中的红黑树
查看>>
Java并发指南2:深入理解Java内存模型JMM
查看>>
Java并发指南6:Java内存模型JMM总结
查看>>
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
查看>>
Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型
查看>>
Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)
查看>>
深入理解JVM虚拟机1:JVM内存的结构与消失的永久代
查看>>
深入理解JVM虚拟机3:垃圾回收器详解
查看>>
深入理解JVM虚拟机4:Java class介绍与解析实践
查看>>
深入理解JVM虚拟机5:虚拟机字节码执行引擎
查看>>
深入理解JVM虚拟机6:深入理解JVM类加载机制
查看>>
深入了解JVM虚拟机8:Java的编译期优化与运行期优化
查看>>
深入理解JVM虚拟机9:JVM监控工具与诊断实践
查看>>
深入理解JVM虚拟机10:JVM常用参数以及调优实践
查看>>
深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
查看>>
深入理解JVM虚拟机13:再谈四种引用及GC实践
查看>>
Spring源码剖析1:Spring概述
查看>>