归并排序-小周的算法笔记
归并排序的核心是二分
#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.概述 2.小和问题 3. 优化 4. 代码实现 1.概述 归并排序相关:[算法]归并排序 这里参考视频:P3 2.认识O(NlogN)的排序 2:29:01 35分的时候视频. 2.小和 ...
- 《算法笔记》学习 入门篇
目录 <算法笔记>学习 3.1 简单模拟 例1:[PAT B1001]害死人不偿命的(3n+1)猜想 例2:[PAT B1032]挖掘机技术哪家强 3.2 查找元素 例:[codeup 1 ...
- JS数据结构与算法 笔记
JS数据结构与算法笔记 前言:不定时更新说明 1. 栈(Stack) 1.1 基于数组实现栈 1.2 基于对象实现栈 1.3 基于链表实现栈 1.4 栈的简单应用 1.4.1 字符串中的括号匹配问题 ...
- 算法笔记(JavaScript版)——排序
算法笔记(JavaScript版)--排序 本文内容根据Rebert Sedgewick和Kevin Wayne的<算法(第四版)>整理,原代码为java语言,自己修改为JavaScrip ...
- java 寻找和为定值的多个数_算法笔记_037:寻找和为定值的两个数(Java)
1 问题描述 输入一个整数数组和一个整数,在数组中查找两个数,满足他们的和正好是输入的那个整数.如果有多对数的和等于输入的整数,输出任意一对即可.例如,如果输入数组[1,2,4,5,7,11,15]和 ...
- 算法笔记(胡凡)学习笔记@Kaysen
本文旨在记录算法笔记学习过程中的收获和一些知识点,部分易错知识点只针对个人而言,CCF-CSP考试冲鸭!!! Chapter 2 C/C++快速入门(易错知识点) 2.1 基本数据类型 变量定义注意区 ...
- 数据结构与算法笔记(青岛大学王卓老师视频)
写在前面的话: 因为在学习数据结构之前,学习过一年的算法,所以有一些基础,一些我觉得 没必要的代码或知识就没写上,记得多是一些知识点,写的可能对于别人来说 很难接受,望谅解.我学习算法是在Acwing ...
- 《算法笔记》第四章笔记
<算法笔记>第四章 排序 排序算法的思想都比较简单,而且c++可以直接用sort函数进行排序,一般不会直接写排序代码 归根到底就是每轮处理一个数据,n个数据只需处理n-1次即可变得有序 选 ...
- 算法笔记知识点整理大全
每次刷题都觉得自己吃了知识点不全,基础不牢固的亏,刷题的时候目标也不明确,于是看完了算法笔记并把知识点归纳了一下,当然直接看书会更加详细,这个归纳只是学习时加深印象以及方便自己之后回顾而已:之后刷题大 ...
最新文章
- Lilt:一个为翻译专家开发的人工智能翻译平台
- 关于javascript数据存储机制的一个案例。
- matlab做交互作用图,MatlabMatlab工程应用案例精要.ppt
- 物联网 — 5G 边缘计算与 IoT
- python编程软件v-Thonny(Python编程工具) V3.2.5 官方版
- [luoguP4306][JSOI2010]连通数
- 虚拟机不显示桌面_Windows10系统,你不知道的10个使用技巧请收藏
- 基于spring-boot和elfinder的在线文件管理
- JavaFX 2.0示例介绍书
- expect 批量修改服务器用户密码
- python输入年月日输出年月日_Python网站浪漫表白神器那些鲜为人知的技术
- SQL夯实基础(九)MySQL联接查询算法
- SQLyog中文版安装教程
- 调试svo 中遇到的问题
- DMA方式的数据传送过程
- 笔记本连不上路由器WiFi,可以连接手机热点,手机可以连接WiFi
- 人月神话(12)干将莫邪
- 201809CCF真题
- 《用计算机画画》教学设计,第8课《简简单单画幅画》教学设计
- 2021年中国电力行业境外电力项目签约额分析:实现签约项目536个 签约合同总金额440.6亿美元[图]