#include <iostream>
using namespace std;
//归并排序非递归版。 void Sort(int a[], int n,int high)
{
int k;
for (int i = 0; i < high; i += 2 * n)
{
int x = i;//001
int y = i + n;//2 2 3
int z = i + 2 * n;// 4
if (z>high)
{
z = high;
}
for (int j = y; j <= z; j++)
{
int temp = a[j];
for (k = j; k > 0; k--)
{
if (a[k - 1]>temp)
{
a[k] = a[k - 1];
}
else
{
break;
}
}
a[k] = temp;
//在须要合并的时候,我选择使用插入排序,不开辟新的空间。
}
}
}
void Grial(int a[],int high)
{
int n = high / 2+1;//终止位置。
//1 2 3 for (int i = 1; i <= n; i *= 2)
{
Sort(a,i,high);
}
}
int main()
{
int a[] = { 5,4,3,7,1,3,2,0,5,6,7,9,654,5,423,3,4,
5,6,8,523,423,4,5,6,7,8,45,6,53,423,4,100 };
Grial(a,sizeof(a) / sizeof(int)-1);
for (int i = 0; i < sizeof(a) / sizeof(int);i++)
{
cout << a[i] << " ";
}
cout << endl;
return 0;
}
#include <iostream>
using namespace std;
//递归版本号的归并排序。
void Sort(int a[], int low, int mid, int high)
{
int i;
int j;
int temp;
for (i = mid+1; i <= high; i++)
{
temp = a[i];
for (j = i; j > low;j--)
{
if (temp < a[j - 1])
{
a[j] = a[j-1];
}
else
{
break;
}
}
//既然已经接近排序好的。那么我们能够选择使用插入排序或者冒泡排序来提高效率
//而且不开辟额外的空间。
a[j] = temp;
}
} void Sert(int a[],int low,int high)
{
if (low >= high)return; int mid = (low + high) / 2;
Sert(a,low, mid);
Sert(a, mid + 1, high);
Sort(a,low,mid,high);
}
int main()
{
int a[] = {6,2,1,3,4,-1,2-3,4,5,6,7,532,4,432,-23,
-32,1,-3,21,-321,-3,5,6,8,432,5,66,991};
Sert(a, 0,sizeof(a) / sizeof(int)-1);
for (int i = 0; i < sizeof(a) / sizeof(int); i++)
{
cout << a[i] << " ";
}
cout << endl;
return 0;
}

C++归并排序总结的更多相关文章

  1. 算法与数据结构(十五) 归并排序(Swift 3.0版)

    上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容.归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其拆分的足够小.当拆分的数组中只有一个元素 ...

  2. [算法]——归并排序(Merge Sort)

    归并排序(Merge Sort)与快速排序思想类似:将待排序数据分成两部分,继续将两个子部分进行递归的归并排序:然后将已经有序的两个子部分进行合并,最终完成排序.其时间复杂度与快速排序均为O(nlog ...

  3. 归并排序的java实现

    归并排序的优点不说了. 做归并排序之前,我先试着将两个有序数组进行排序,合并成一个有序数组. 思路:定义好两个有序数组,理解的时候我先思考了数组只有一个数组的排序,然后是两个元素的数组的排序,思路就有 ...

  4. JavaScript算法(归并排序与快速排序)

    归并排序与快速排序这两个算法放在一起,也是因为时间复杂度都是对数级别的. 目前看过的资料,归并排序看<学习JavaScript数据结构与算法>介绍的归并排序吧,快速排序直接看百度百科,讲的 ...

  5. 归并排序算法 java 实现

    归并排序算法 java 实现 可视化对比十多种排序算法(C#版) [直观学习排序算法] 视觉直观感受若干常用排序算法 算法概念 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Di ...

  6. java归并排序,单线程vs多线程

    一.什么是归并排序 归并排序又称合并排序,它是成功应用分治技术的一个完美例子.对于一个需要排序的数组A[0..n-1],归并排序把它一分为二:A[0..n/2-1]和A[n/2..n-1],并对每个子 ...

  7. sphinx索引分析——文件格式和字典是double array trie 检索树,索引存储 – 多路归并排序,文档id压缩 – Variable Byte Coding

    1 概述 这是基于开源的sphinx全文检索引擎的架构代码分析,本篇主要描述index索引服务的分析.当前分析的版本 sphinx-2.0.4 2 index 功能 3 文件表 4 索引文件结构 4. ...

  8. php基础排序算法 冒泡排序 选择排序 插入排序 归并排序 快速排序

    <?php$arr=array(12,25,56,1,75,13,58,99,22);//冒泡排序function sortnum($arr){    $num=count($arr);    ...

  9. [NOIP2013] 火柴排队(归并排序)

    题目描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为: ∑(ai-bi)^2 其中 ai 表示 ...

  10. 用Java写算法之归并排序

    转自:http://flyingcat2013.blog.51cto.com/7061638/1281026 前面的三种排序算法(冒泡排序,选择排序,插入排序)在平均情况下均为O(n^2)复杂度,在处 ...

随机推荐

  1. css表格表单和统筹

    css:表格表单和统筹 学习目标 1.表单标签及属性高级 2.表格标签及属性高级 3.CSS统筹 4.BFC概念和应用场景 一.表单标签及属性高级 回顾: 表单的作用:用来收集用户的信息的; 表单的组 ...

  2. CSS解决ul下面最后一个li的margin

    1.运用css3的nth-child(3n): <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...

  3. ajax的两种使用方式

    一.Ajax概述 1.什么是同步,什么是异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待 卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都 ...

  4. [terry笔记]学校管理系统

    如下是要求: # 角色:学校.学员.课程.讲师# 要求:# 1. 创建北京.上海 2 所学校# 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上 ...

  5. mysql 全表扫描、全索引扫描、索引覆盖(覆盖索引)

    full index scan:全索引扫描,查询时,遍历索引树来获取数据行.如果数据不是密集的会产生随机IO 在执行计划中是Type列,index full table scan:通过读物理表获取数据 ...

  6. 拷贝构造函数不能传值,只能传引用,而且一般是传const引用

    为什么呢?因为传值函数,需要调用拷贝构造函数,那就层层循环无止境了.

  7. C++基础学习教程(三)

    承接上一讲. 2.7文件I/O 关于读写文件,C++中有一个专门的头文件<fstream>. 首先是读文件演示样例,例如以下: </pre><pre> /***** ...

  8. 数据库之Case When

    近期几天的工作本来组长是安排我用mindfocion画几个图,本来以为难点是这个控件的使用,可是开发的时候才发现由于数据量有点多,所以在开发的时候汇总这些信息倒是费了我许多的功夫,最后总结一下就是写了 ...

  9. 同一个TextView设置不同的颜色和大小

    //strategy1是一个TextView SpannableStringBuilder builder1 = new SpannableStringBuilder(strategy1.getTex ...

  10. [Hibernate]Access to DialectResolutionInfo cannot be null when &#39;hibernate.dialect&#39; not set

    使用Hibernate官方文档上的下面代码进行測试时报出这个异常. org.hibernate.HibernateException: Access to DialectResolutionInfo ...