归并排序的核心是二分

#include<iostream>using namespace std;
void Merge(int arr[], int low, int mid, int high) {int i = low, j = mid + 1, k = 0;int* temp = new(nothrow) int[high - low + 1];if (!temp) {cout << "error" << endl;return;}while (i <= mid && j <= high) {if (arr[i] <= arr[j]) {temp[k++] = arr[i++];}else temp[k++] = arr[j++];}while (i <= mid) {temp[k++] = arr[i++];}while (j <= high) {temp[k++] = arr[j++];}for (i = low, k = 0; i <= high; i++, k++) {arr[i] = temp[k];}delete[] temp;
}
void MergeSort(int arr[], int low, int high) {if (low < high) {int mid = (low + high) / 2;MergeSort(arr, low, mid);MergeSort(arr, mid + 1, high);Merge(arr, low, mid, high);}else {return;}
}
void MergeSort1(int arr[], int n) {//n代表数组中元素个数,即数组最大下标是n-1{/*int step = 1;while (step < n) //当元素个数不是2的幂时可能会出错,未考虑第2个序列个数不足的情况{for (int i = 0; i <= n - step - 1; i += 2 * step)Merge(arr, i, i + step - 1, i + 2 * step - 1);step *= 2;}*/int size = 1, low, mid, high;while (size <= n - 1) {low = 0;while (low + size <= n - 1) {mid = low + size - 1;high = mid + size;if (high > n - 1)//第二个序列个数不足sizehigh = n - 1;Merge(arr, low, mid, high);//调用归并子函数low = high + 1;//下一次归并时第一关序列的下界}size *= 2;//范围扩大一倍}
}
int a[10000];
int main() {int n;cin >> n;for (int i = 0; i < n; i++) {cin >> a[i];}MergeSort2(a, n - 1);for (int i = 0; i < n; i++) {cout << a[i];cout << " ";}return 0;
}

归并排序-小周的算法笔记相关推荐

  1. 【算法】归并排序 小和 问题

    文章目录 1.概述 2.小和问题 3. 优化 4. 代码实现 1.概述 归并排序相关:[算法]归并排序 这里参考视频:P3 2.认识O(NlogN)的排序 2:29:01 35分的时候视频. 2.小和 ...

  2. 《算法笔记》学习 入门篇

    目录 <算法笔记>学习 3.1 简单模拟 例1:[PAT B1001]害死人不偿命的(3n+1)猜想 例2:[PAT B1032]挖掘机技术哪家强 3.2 查找元素 例:[codeup 1 ...

  3. JS数据结构与算法 笔记

    JS数据结构与算法笔记 前言:不定时更新说明 1. 栈(Stack) 1.1 基于数组实现栈 1.2 基于对象实现栈 1.3 基于链表实现栈 1.4 栈的简单应用 1.4.1 字符串中的括号匹配问题 ...

  4. 算法笔记(JavaScript版)——排序

    算法笔记(JavaScript版)--排序 本文内容根据Rebert Sedgewick和Kevin Wayne的<算法(第四版)>整理,原代码为java语言,自己修改为JavaScrip ...

  5. java 寻找和为定值的多个数_算法笔记_037:寻找和为定值的两个数(Java)

    1 问题描述 输入一个整数数组和一个整数,在数组中查找两个数,满足他们的和正好是输入的那个整数.如果有多对数的和等于输入的整数,输出任意一对即可.例如,如果输入数组[1,2,4,5,7,11,15]和 ...

  6. 算法笔记(胡凡)学习笔记@Kaysen

    本文旨在记录算法笔记学习过程中的收获和一些知识点,部分易错知识点只针对个人而言,CCF-CSP考试冲鸭!!! Chapter 2 C/C++快速入门(易错知识点) 2.1 基本数据类型 变量定义注意区 ...

  7. 数据结构与算法笔记(青岛大学王卓老师视频)

    写在前面的话: 因为在学习数据结构之前,学习过一年的算法,所以有一些基础,一些我觉得 没必要的代码或知识就没写上,记得多是一些知识点,写的可能对于别人来说 很难接受,望谅解.我学习算法是在Acwing ...

  8. 《算法笔记》第四章笔记

    <算法笔记>第四章 排序 排序算法的思想都比较简单,而且c++可以直接用sort函数进行排序,一般不会直接写排序代码 归根到底就是每轮处理一个数据,n个数据只需处理n-1次即可变得有序 选 ...

  9. 算法笔记知识点整理大全

    每次刷题都觉得自己吃了知识点不全,基础不牢固的亏,刷题的时候目标也不明确,于是看完了算法笔记并把知识点归纳了一下,当然直接看书会更加详细,这个归纳只是学习时加深印象以及方便自己之后回顾而已:之后刷题大 ...

最新文章

  1. Lilt:一个为翻译专家开发的人工智能翻译平台
  2. 关于javascript数据存储机制的一个案例。
  3. matlab做交互作用图,MatlabMatlab工程应用案例精要.ppt
  4. 物联网 — 5G 边缘计算与 IoT
  5. python编程软件v-Thonny(Python编程工具) V3.2.5 官方版
  6. [luoguP4306][JSOI2010]连通数
  7. 虚拟机不显示桌面_Windows10系统,你不知道的10个使用技巧请收藏
  8. 基于spring-boot和elfinder的在线文件管理
  9. JavaFX 2.0示例介绍书
  10. expect 批量修改服务器用户密码
  11. python输入年月日输出年月日_Python网站浪漫表白神器那些鲜为人知的技术
  12. SQL夯实基础(九)MySQL联接查询算法
  13. SQLyog中文版安装教程
  14. 调试svo 中遇到的问题
  15. DMA方式的数据传送过程
  16. 笔记本连不上路由器WiFi,可以连接手机热点,手机可以连接WiFi
  17. 人月神话(12)干将莫邪
  18. 201809CCF真题
  19. 《用计算机画画》教学设计,第8课《简简单单画幅画》教学设计
  20. 2021年中国电力行业境外电力项目签约额分析:实现签约项目536个 签约合同总金额440.6亿美元[图]

热门文章

  1. 机票预订信息系统——数据库系统设计
  2. FileManage
  3. 计算机学院运动会解说词,学院运动会解说词
  4. BZOJ1132: [POI2008]Tro
  5. Activity的5种启动模式详解(新增singleInstancePerTask类型)
  6. 机械键盘知多少:Mac党的福音键盘
  7. reverseorder_Java集合reverseOrder()方法及示例
  8. RSA加密为什么每次加密的结果不一样
  9. 分区依据字段要不要再建索引
  10. 数学题(dfs or dp),木木不哭┭┮﹏┭┮(dp)