• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++归并排序算法实例

C++归并排序算法实例

作者:果冻想 字体:[增加 减小] 来源:互联网 时间:2017-05-28

果冻想 通过本文主要向大家介绍了c++归并排序算法,归并排序c++,归并排序实例,归并排序算法,归并算法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

归并排序

归并排序算法是采用分治法的一个非常典型的应用。归并排序的思想是将一个数组中的数都分成单个的;对于单独的一个数,它肯定是有序的,然后,我们将这些有序的单个数在合并起来,组成一个有序的数列。这就是归并排序的思想。它的时间复杂度为O(N*logN)。

代码实现

#include <iostream>
using namespace std;
 
//将有二个有序数列a[first...mid]和a[mid...last]合并。
void mergearray(int a[], int first, int mid, int last, int temp[])
{
     int i = first, j = mid + 1;
     int m = mid,   n = last;
     int k = 0;
 
     while (i <= m && j <= n)
     {
          if (a[i] <= a[j])
               temp[k++] = a[i++];
          else
               temp[k++] = a[j++];
     }
 
     while (i <= m)
          temp[k++] = a[i++];
 
     while (j <= n)
          temp[k++] = a[j++];
 
     for (i = 0; i < k; i++)
          a[first + i] = temp[i];
}
void mergesort(int a[], int first, int last, int temp[])
{
     if (first < last)
     {
          int mid = (first + last) / 2;
          mergesort(a, first, mid, temp);    //左边有序
          mergesort(a, mid + 1, last, temp); //右边有序
          mergearray(a, first, mid, last, temp); //再将二个有序数列合并
     }
}
 
bool MergeSort(int a[], int n)
{
     int *p = new int[n];
     if (p == NULL)
          return false;
     mergesort(a, 0, n - 1, p);
     delete[] p;
     return true;
}
 
int main()
{
     int arr[] = {2, 1, 4};
     MergeSort(arr, 3);
 
     for (int i = 0; i < 3; ++i)
     {
          cout<<arr[i]<<" ";
     }
     cout<<endl;
}
</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • c++ 快速排序算法【过程图解】
  • C++实现的归并排序算法详解
  • 详细总结C++的排序算法
  • C++实现自顶向下的归并排序算法
  • C++归并算法实例
  • C++归并排序算法实例
  • C++中的几种排序算法

相关文章

  • 2017-05-28Cocos2d-x保存用户游戏数据CCUserDefault类使用实例
  • 2017-05-28C语言中对字母进行大小写转换的简单方法
  • 2017-05-28深入解析C++中的mutable关键字
  • 2017-05-28详解C++编程中的静态成员与可变数据成员
  • 2017-05-28C语言main函数的参数及其返回值详细解析
  • 2017-05-28MFC程序设计常用技巧汇总
  • 2017-05-28C++ 动态创建按钮及 按钮的消息响应
  • 2017-05-28使用C语言解决字符串匹配问题的方法
  • 2017-05-28vector与map的erase()函数详细解析
  • 2017-05-28基于C语言EOF与getchar()的使用详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 详解C++语言中的加法运算符与赋值运算符的用法
    • Cocos2d-x中CCEditBox文本输入框的使用实例
    • Cocos2d-x中使用CCScrollView来实现关卡选择实例
    • c语言多进程tcp服务器示例
    • DSP中浮点转定点运算--浮点数的存储格式
    • 举例讲解C语言对归并排序算法的基础使用
    • C语言实现支持动态拓展和销毁的线程池
    • C语言中isalnum()函数和isalpha()函数的对比使用
    • C++获取当前系统时间的方法总结
    • C++实现单链表按k值重新排序的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有