MergeSort-vector
归并排序-vector实现
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
void Merge(vector<int> &v, int L, int M, int R)
{
//拆分成两个vector:left和right
//vector(begin,end):复制[begin,end)区间内另一个数组的元素到vector中
vector<int> left(v.begin() + L, v.begin() + M + 1);
vector<int> right(v.begin() + M + 1, v.begin() + R + 1);
//两个迭代器
auto left_it = left.cbegin();
auto right_it = right.cbegin();
int i = L;
//合并vector
while (left_it != left.cend() && right_it != right.cend())
{
if (*left_it < *right_it)
v[i++] = *(left_it++);
else
v[i++] = *(right_it++);
}
while (left_it != left.cend())
v[i++] = *(left_it++);
while (right_it != right.cend())
v[i++] = *(right_it++);
}
//Ascending
void MergeSort(vector<int> &v, int L, int R)
{
if (L == R)
return;
else
{
MergeSort(v, L, (L + R) / 2);
MergeSort(v, (L + R) / 2 + 1, R);
Merge(v, L, (L + R) / 2, R);
}
}
int main(void)
{
vector<int> v = {4, 3, 2, 1, 0};
MergeSort(v, 0, 4);
for (int i = 0; i < 5; i++)
cout << v[i] << endl;
return 0;
}
MergeSort-vector的更多相关文章
- 几种经典排序算法的R语言描述
1.数据准备 # 测试数组 vector = c(,,,,,,,,,,,,,,) vector ## [] 2.R语言内置排序函数 在R中和排序相关的函数主要有三个:sort(),rank(),ord ...
- 【leetcode】Largest Number ★
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
- 【Algorithms】归并排序(merge sort)
几个比较常见的排序算法里头,这个我是比较生疏的一个,有一天突然被问了一个问题是,归并排序最大的特点是什么,我才想起这个算法来.下午又看不进书啦,就实现一下,记下来. 归并排序采取的是分治策略,就是先将 ...
- 排序算法总结(二)归并排序【Merge Sort】
一.归并排序原理(Wikipedia) 归并排序本质是分治思想的应用,并且各层分治递归可以同时进行 1.申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 2.设定两个指针,最初位置 ...
- C/C++ 知识点---排序实现
1.冒泡排序冒泡排序是O(N^2)复杂度的排序算法,效率较低,需要N趟遍历,每次将候选集中最小的数通过交换浮到最上面: template <typename Type> void Bubb ...
- hihoCoder_二分·归并排序之逆序对
一.题目 题目1 : 二分·归并排序之逆序对 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 在上一回.上上回以及上上上回里我们知道Nettle在玩<艦これ&g ...
- 1089. Insert or Merge (25)
题目如下: According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, ...
- 排序算法C++实现
先按照王道系列的伪代码,写了一下常见的排序算法.代码先放这儿,先不做算法分析,回头再来分析消化. // 排序算法.cpp : 定义控制台应用程序的入口点. // #include "stda ...
- 南大算法设计与分析课程OJ答案代码(2)最大子序列和问题、所有的逆序对
问题 A: 最大子序列和问题 时间限制: 1 Sec 内存限制: 4 MB提交: 184 解决: 66提交 状态 算法问答 题目描述 给定一整数序列 a1, a2, …, an,求 a1~an 的 ...
- 十大经典排序算法+sort排序
本文转自:十大经典排序算法,其中有动图+代码详解,本文简单介绍+个人理解. 排序算法 经典的算法问题,也是面试过程中经常被问到的问题.排序算法简单分类如下: 这些排序算法的时间复杂度等参数如下: 其中 ...
随机推荐
- 最新NetMonitor代码
<Window x:Class="NetMonitor.MainWindow" xmlns="http://schemas.microsoft.com/winfx/ ...
- datediff(date1,date2) 函数的使用
版权声明:本文为博主原创文章,未经博主允许不得转载. 在MySQL中可以使用DATEDIFF()函数计算两个日期之间的天数 语法: datediff(date1,date2) 注:date1和date ...
- python的整数相除
在python2中: 10/4=2 在python3中: 10/4=2.5 10//4=2
- DataGridView 导出Excel (封装)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...
- [Ignatius and the Princess III] 整数的无序拆分(DP + 生成函数)
整数的有序拆分就是隔板法,无序拆分则有两种处理方法 DP递推 我们假设P(n,m)P(n,m)P(n,m)是正整数nnn无序拆分为mmm个正整数的方案数 对于某一种拆分,不妨将拆分出来的mmm个数从小 ...
- php+tcpdf生成pdf: 中文乱码
TCPDF是一个生成PDF的不错的库,可惜,官方对包括中文在内的东亚字体支持不怎么样的.场景:某项目需要根据数据库信息生成pdf格式的发票,考虑采用稳定的tcpdf,虽然还有许多其它选择,但是这个应该 ...
- Java字符串之间拼接时,如果有null值,则会直接拼接上null
package com.fgy.demo; public class demo06 { public static void main(String[] args) { String str1 = & ...
- JMeter学习1
Jmeter的组织方式相对比较扁平,直接是TestPlan(相当于Project),TestPlan下创建的ThreadsGroup(相当于TestCase), Jmeter一个TestPlan也是一 ...
- MuPAD使用总结
MuPAD使用总结 一.打开notebook界面的方法: 二.notebook界面的三种区域 (一).输入区域 输入区域在打开来的时候就有,就是,但是之后如果还想再加,可以点击上方红色框内的图标. 这 ...
- (LIS)最长上升序列(DP+二分优化)
求一个数列的最长上升序列 动态规划法:O(n^2) //DP int LIS(int a[], int n) { int DP[n]; int Cnt=-1; memset(DP, 0, sizeof ...