[一步一步写算法导论]合并排序
来源:互联网 发布:淘宝没发货退款要多久 编辑:程序博客网 时间:2024/06/04 23:20
1.伪码
第一部分,将两个子串合并的算法
第二部分,递归分化,然后子串合并
2.c++代码
// MergeSort.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <vector>using namespace std;vector<int> A;void Merge(vector<int >&A,int p,int q,int r){int n1 = q - p + 1;int n2 = r - q ;vector<int> L(n1);vector<int> R(n2);for (int i = 0; i < n1; i++){L[i] = A[p + i];}for (int i = 0; i < n2; i++){R[i] = A[q +1+ i];}int i = 0;int j = 0;int k = 0;for (k = p; k < r && i < n1 && j < n2; k++){if (L[i]<=R[j]){A[k] = L[i];i++;}else{A[k] = R[j];j++;}}while (i< n1){A[k++] = L[i++];}while (j< n2){A[k++] = R[j++];}}void MergeSort(vector<int>&A,int p,int r){if (p< r){int q = (p + r) / 2;MergeSort(A, p, q);MergeSort(A, q + 1, r);Merge(A, p, q, r);}}int _tmain(int argc, _TCHAR* argv[]){A = { 5, 2, 4, 7, 1, 2, 3, 6 };for (auto it = A.begin(); it < A.end();it++){cout << *it << " ";}MergeSort(A, 0, 7);cout << endl;for (auto it = A.begin(); it < A.end(); it++){cout << *it << " ";}return 0;}
0 0
- [一步一步写算法导论]合并排序
- 一步一步写算法(之合并排序)
- 一步一步写算法(之合并排序)
- 【算法导论】 2.3合并排序
- 【算法导论】合并排序法
- 一步一步写算法--堆排序
- [多图预警详细演示一步一步写算法导论] 冒泡排序
- [多图预警详细演示一步一步写算法导论]插入排序
- 合并排序算法函数(算法导论)
- 合并排序算法函数(算法导论)
- 算法导论合并排序算法python实现
- 学习算法导论-合并排序
- 算法导论笔记之----合并排序
- 算法导论CLRS 2.3 合并排序
- 算法导论——合并排序
- 算法导论,合并排序,c实现。
- 算法导论--JAVA实现合并排序详解
- 一步一步写算法(之快速排序)
- DP总结(持续更新)
- 浅谈《最短路》问题(一)
- 字符串匹配
- LRU
- 制作简单网页
- [一步一步写算法导论]合并排序
- LINUX下用TAR方式安装MYSQL方法步骤
- Frogger poj 2253 floyd
- 螺旋队列的另一种解法
- android 在 button、textview等控件按下和选中的时候改变颜色或图片实现方法
- 韩语学习之第十九课
- Ubuntu13.10纯文本模式/终端中文乱码解决方法
- (模板)c++ 大数(正数加减乘除)
- 操作系统内存管理