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排序
本文转自:十大经典排序算法,其中有动图+代码详解,本文简单介绍+个人理解. 排序算法 经典的算法问题,也是面试过程中经常被问到的问题.排序算法简单分类如下: 这些排序算法的时间复杂度等参数如下: 其中 ...
随机推荐
- 【Java】《Java程序设计基础教程》第七、八章学习
第七章 异常处理 通过try...catch...finally结构来捕获一个或多个异常 第八章 Java的输入与输出及文件操作 8.1 文件 File类常用的方法 1. public boolean ...
- java代码操作word模板并生成PDF
这个博客自己现在没时间写,等后面有时间了,自己再写. 这中需求是在实际的项目开发中是会经常遇到的. 下面我们先从简单入手一步一步开始. 1.首先,使用word创建一个6行两列的表格. 点击插入-6行2 ...
- 解决:一个项目中写多个包含main函数的源文件并分别调试运行
自己在学c++的时候,一个项目中的多个cpp文件默认不允许多个main函数的出现,但是通过选项操作能够指定单个cpp文件进行运行,如下: 1.此时我就想运行第二个cpp文件,我们只需要把其他的两个右键 ...
- 学习Spring-Data-Jpa(十四)---自定义Repository
有些时候,我们需要自定义Repository实现一些特殊的业务场景. 1.自定义单个Repository 1.1.首先提供一个片段接口和实现(接口的实现默认要使用Impl为后缀,实现本身不依赖spri ...
- LeetCode 990. Satisfiability of Equality Equations
原题链接在这里:https://leetcode.com/problems/satisfiability-of-equality-equations/ 题目: Given an array equat ...
- CentOS yum repo
CentOS yum repo 阿里云的 一个是Centos-6的 一个是Centos-7 # CentOS 5 wget -O /etc/yum.repos.d/CentOS-Base.rep ...
- learning java FileReader
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import ...
- 多项式乘法,sb题
给定一个n,输出\((a1+x)*(a2+x)*...(an+x)\)的多项式长度. 每一个字符(包括"a"."x"."(".") ...
- 使用python3完成人脸识别
原文地址:https://www.jb51.net/article/160197.htm 第一种: # -*- coding:utf-8 -*- import cv2 as cv import num ...
- nginx重启 平滑重启
进入 ngiinx sbin目录下./nginx -c /usr/local/nginx/conf/nginx.conf -c参数指定了要加载的nginx配置文件路径 停止操作停止操作是通过向ngin ...