归并排序

标签: 归并排序
796人阅读 评论(0) 收藏 举报
分类:
#include <iostream>
#include <stdlib.h>
using namespace std;

template<class T>void mergeSort(T a[],int left,int right);
void printArray(int a[],int n){
    for(int i=0;i<n;i++){
       cout<<a[i]<<"\t";
    }
}

void Merge(int c[],int d[],int l,int m,int r){
   int i=1;
   int j=m+1;
   int k=1;
   while((i<=m)&&(j<=r)){
       if(c[i]<=c[j]){
        d[k++]=c[i++];
       }else{
         d[k++]=c[j++];
       }
   }

   if(i>m){
      for(int q=j;q<=r;q++){
         d[k++]=c[q];
      }
   }else{
      for(int q=i;q<=m;q++){
          d[k++]=c[q];
      }
   }
}

void Copy(int a[],int b[],int left,int right){
    for (int i = left; i < right; ++i)
    {
        a[i]=b[i];
    }
}

void mergeSort(int a[],int left,int right){

    if(left<right){
       int i=(left+right)/2;
       int *b=new int[100];
       mergeSort(a,left,i);
       mergeSort(a,i+1,right);
       Merge(a,b,left,i,right);
       Copy(a,b,left,right);

    }


}


int main(){
   int a[10]={10,3,90,22,8,1,20,100,33,106};
    cout<<"排序前:\n";
    printArray(a,10);
    mergeSort(a,0,9);
    cout<<"排序后:\n";
    printArray(a,10);
}
查看评论

归并排序 sort 计算机排序算法

  • 2009年12月17日 11:40
  • 876KB
  • 下载

我对归并排序的理解

归并排序总体来说比较简单,其适应场所是对已经排序好的几个序列整合成一个总的排序好的序列。根据其特点,对于已经排序好的几个序列,只需依次取其第一个元素比较,较小的放在新序列里。对于一个数组的情况,先将其...
  • lengjinghk
  • lengjinghk
  • 2016-03-08 14:47:22
  • 856

归并排序和快速排序总结

归并排序和快速排序总结1. 算法基本思路:分治分治,字面上的解释是“分而治之”,就是把一个复杂的问题分成多个同等结构的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解...
  • qq_32657025
  • qq_32657025
  • 2017-11-05 10:38:46
  • 234

归并排序的递归形式与非递归形式(C++版)

C++实现归并排序,以递归的形式非递归的形式
  • u012597860
  • u012597860
  • 2016-04-21 13:46:45
  • 1175

归并排序(视频+详解+代码)

归并排序 概述:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到...
  • dreamzuora
  • dreamzuora
  • 2016-10-16 15:38:27
  • 1187

位图排序、多路归并排序-应对磁盘文件排序

注意文章详解(http://blog.csdn.net/v_JULY_v/article/details/6451990)如何给磁盘文件排序问题描述:输入:给定一个文件,里面最多含有n个不重复的正整数...
  • ccy365263452
  • ccy365263452
  • 2016-12-13 17:08:40
  • 734

归并排序算法 递归及循环实现

第一步合并相邻长度为1的子数组段,这是因为长度为1的子数组段是已经排好序的。 用一次对数组arr的线性扫描就足以找出所有这些排好序的子数组段。然后将相邻的排好序的子数组段两两合并,构成更大的排好序的...
  • catkint
  • catkint
  • 2016-03-15 22:04:59
  • 718

白话经典算法系列之五 归并排序的实现(讲的真好)

归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较...
  • yuehailin
  • yuehailin
  • 2017-04-03 16:25:48
  • 38388

归并排序的C++的算法

  • 2010年07月12日 16:00
  • 4KB
  • 下载
    StackOverFlow
    http://stackoverflow.com/users/6526424
    统计
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 102万+
    积分: 9713
    排名: 2300
    博客专栏
    最新评论