c/c++实现归并排序

news/2024/5/17 15:35:36 标签: 归并排序

归并排序 -

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

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

/*归并排序*/
//排序两个有序数列
void mergeSortInOrder(vector<int> &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 DownToUp
void mergeSort(vector<int> &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://www.niftyadmin.cn/n/1405002.html

相关文章

滚屏加载--无刷新动态加载数据技术的应用

http://www.helloweba.com/view-blog-152.html 我们浏览有些网页的时候&#xff0c;当拉动浏览器的滚动条时到页底时&#xff0c;页面会继续自动加载更多内容供用户浏览。这种技术我暂且称它为滚屏加载技术。我们发现很多网站用到这种技术&#xff0c;必应图片搜索、新浪微博、…

c/c++实现计数排序

计数排序 核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序&#xff0c;计数排序要求输入的数据必须是有确定范围的整数。 计数排序(Counting sort) 是一种稳定的排序算法。计数排序使用一个额外的数组C&#xff0c;其中第i个元素是…

Jquery如何获取select选中项 自定义属性的值?

Jquery如何获取select选中项 自定义属性的值&#xff1f; 得出的是undefined!! 怎么获取select选中项中的自定义属性“emoney”的值&#xff01;&#xff1f;&#xff1f; ------解决方案-------------------------------------------------------- $("#ddl").find(&…

Qt各种颜色名称及CSS对照表

css颜色代码对照 参见&#xff1a; https://blog.csdn.net/zy_heu/article/details/78952173

Qt——获取指定文件夹下的所有文件及指定文件夹下的所有文件夹

头文件包含 #include <QFileDialog>代码实现 获取指定文件夹下的所有文件&#xff08;*.tiff *.tif&#xff09;&#xff1a; mFolderPath QFileDialog::getExistingDirectory(NULL, "Open Folder", "F:\\FocusImgs\\imgs\\a1");if (mFolderPath.…

CSS 3D翻转卡片动画

原文链接&#xff1a; http://caibaojian.com/3d-flip-card.html这个CSS翻转卡片效果是在鼠标滑过上面的时候会有一个炫酷的旋转&#xff0c;显示下面的后面卡片&#xff0c;并且有发光的效果。下面分享一下这个代码&#xff1a; HTML代码&#xff1a; <div class"fl…

Qt+visual studio环境下FFmpeg环境配置

FFmpeg介绍、下载、说明 FFmpeg是领先的多媒体框架&#xff0c;提供了音视频的编码&#xff0c;解码&#xff0c;转码&#xff0c;封装&#xff0c;解封装&#xff0c;流&#xff0c;滤镜(滤波器)&#xff0c;播放等功能。它几乎支持所有的音视频格式&#xff0c;不管是标准委员…

js点击下载跳转iOS或安卓

原文链接&#xff1a; http://caibaojian.com/android-ios-downapp.html在移动wap上&#xff0c;最常见的就是引流用户下载安装自己的应用程序&#xff0c;如何通过js点击判断下载是ios还是安卓呢&#xff1f;其实很简单&#xff0c;就是要判断用户的设备是iOS还是Android&…