一个归并排序卡了一天最后还是归并算法有问题,最初是为了把算法导论的伪代码转到c++而加了一些东西,其中在对左右数组的赋值那里出了问题。因为进行测试时不完全,就是只用书上的数组进行测试时,归并算法部分还好使,而归并排序不好使,一度以为是函数递归出了问题。现在看来,首先要看懂递归模型,然后算法的基础要弄明白,输入的参数一定要弄好,不要总弄常量进行测试。

//MERGE(A,p,q,r)

// n1=q-p+1

// n2=r-q

// let L[1...n1+1] and R[1..n2+1] be new arrays

// for i=1 to n1

//  L[i]=A[p+i-1]

// for j=1 to n2

//  R[j]=A[q+j]

// L[n1+]=infinity

// R[n2+1]=infinity

// i=1

// j=1

// for k=p to r

//  if L[i]<=R[j]

//  A[k]=L[i]

//  i=i+1

//  else A[k]=R[j]

//  j=j+1

#include <iostream> using namespace std;
void Merge(int A[],int p,int q,int r) { int n1=q-p+; int n2=r-q; int *L=new(int[n1]); int *R=new(int[n2]); for (int i=;i<n1;i++) { L[i]=A[i+p-];//这两个地方不能瞎改,跟归并排序有关,乱改了就会出现归并无法进行的情况。 } L[n1]=; for (int j=;j<n2;j++) { R[j]=A[q+j];//这两个地方不能瞎改 }   R[n2]=;   int i=;   int j=;   int k; for (k=p-;k<r;k++) {   if (L[i]<=R[j]) {
   A[k]=L[i];    i++;
} else { A[k]=R[j]; j++; } } //delete L; //delete R;//一加这两条程序就死了 } void MergeSort(int A[],int p,int r)//归并排序 { if( p < r ) { int q=(p+r)/; MergeSort(A,p,q); MergeSort(A,q+,r); Merge(A,p,q,r); } } //MERGE-SORT(A,p,r) // if q<r // q=[(p+r/2)] // MERGE-SORT(A,p,q) // MERGE-SORT(A,q+1,r) // MERGE(A,p,q,r) int main() { int A[]={,,,,,,,,,,,,,,}; //int A[]={2,4,5,7,1,2,3,6}; int p,r,q; p=; //q=4; r=; cout<<"排序前:"; for (int i=;i<r;i++) cout<<A[i]<<' '; cout<<endl; MergeSort(A,p,r);//归并排序 cout<<"排序后:"; for (int i=;i<r;i++) cout<<A[i]<<' '; cout<<endl; system("pause"); return ; }

【算法导论C++代码】归并排序的更多相关文章

  1. 【算法导论C++代码】Strassen算法

    简单方阵矩乘法 SQUARE-MATRIX-MULTIPLY(A,B) n = A.rows let C be a new n*n natrix to n to n cij = to n cij=ci ...

  2. 基于visual Studio2013解决算法导论之002归并排序

     题目 归并排序 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #in ...

  3. 【算法导论C++代码】最大子数组

    #define Inf 65535 #include <iostream> using namespace std; void FindMaxCrossingSubarray(int *A ...

  4. 《算法导论》第二章demo代码实现(Java版)

    <算法导论>第二章demo代码实现(Java版) 前言 表示晚上心里有些不宁静,所以就写一篇博客,来缓缓.囧 拜读<算法导论>这样的神作,当然要做一些练习啦.除了练习题与思考题 ...

  5. 算法导论 - 基础知识 - 算法基础(插入排序&归并排序)

    在<算法导论>一书中,插入排序作为一个例子是第一个出现在该书中的算法. 插入排序: 对于少量元素的排序,它是一个有效的算法. 插入排序的工作方式像许多人排序一手扑克牌.开始时,我们手中牌为 ...

  6. 《算法导论》读书笔记之排序算法—Merge Sort 归并排序算法

    自从打ACM以来也算是用归并排序了好久,现在就写一篇博客来介绍一下这个算法吧 :) 图片来自维基百科,显示了完整的归并排序过程.例如数组{38, 27, 43, 3, 9, 82, 10}. 在算法导 ...

  7. 《算法导论》归并排序----merge-sort

    伪代码请见<算法导论>2.3节 merge-sort实现: public class MergeSort {        public static void sort(double [ ...

  8. MIT算法导论——第五讲.Linear Time Sort

    本栏目(Algorithms)下MIT算法导论专题是个人对网易公开课MIT算法导论的学习心得与笔记.所有内容均来自MIT公开课Introduction to Algorithms中Charles E. ...

  9. MIT算法导论——第四讲.Quicksort

    本栏目(Algorithms)下MIT算法导论专题是个人对网易公开课MIT算法导论的学习心得与笔记.所有内容均来自MIT公开课Introduction to Algorithms中Charles E. ...

随机推荐

  1. Codeforces 940F Machine Learning 带修改莫队

    题目链接 题意 给定一个长度为\(n\)的数组\(a\),\(q\)个操作,操作分两种: 对于区间\([l,r]\),询问\(Mex\{c_0,c_1,c_2,⋯,c_{10^9}\}\),其中\(c ...

  2. python3 面向对象、类、继承、组合、派生、接口、子类重用父类方法

    对象是特征(变量)与技能(函数)的结合体而类是一系列对象共同的特征与技能的集合体 class teacher: lesson = "python" def __init__(sel ...

  3. UVALIVE 3562 Remember the A La Mode!

    费用流 建图很简单直接上代码 #include <map> #include <set> #include <list> #include <cmath> ...

  4. HTTP===如何理解网关

    首先举个例子: 假设你的名字叫小不点(很小),你住在一个大院子里,你的邻居有很多小伙伴,父母是你的网关.当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声他的名字,他听到了就会回应你,并且跑出来跟你 ...

  5. Java坦克大战 (七) 之图片版

    本文来自:小易博客专栏.转载请注明出处:http://blog.csdn.net/oldinaction 在此小易将坦克大战这个项目分为几个版本,以此对J2SE的知识进行回顾和总结,希望这样也能给刚学 ...

  6. OC学习——OC中的@protocol(@required、@optional)、代理设计模式

    一.什么是协议? 1.协议声明了可以被任何类实现的方法   2.协议不是类,它是定义了一个其他对象可以实现的接口   3.如果在某个类中实现了协议中的某个方法,也就是这个类实现了那个协议.   4.协 ...

  7. js排序(转载)

    原文地址:http://blog.csdn.net/wzwlln/article/details/6187732#plain sort(sortfunction)为javascript的数组对象(Ar ...

  8. Selenium2+python自动化32- 测试报告的易读性【转载】

    前言 前一篇已经介绍了报告的生成方法,本篇小编优化一下测试报告,使测试报告便于大多数阅读.虽然在我们在测试用例开发时为每个用例添加了注释,但测试报告一般是给非测试人员阅读的,如果能在报告中为每一个测试 ...

  9. hdu 5191(思路题)

    Building Blocks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  10. linux上redis的安装与配置

    1.redis安装 wget http://download.redis.io/releases/redis-4.0.8.tar.gz tar xzf redis-4.0.8.tar.gz ln -s ...