,,C++实现归并排序(MergeSort)

,,C++实现归并排序(MergeSort)

本文主要详细介绍合并排序的C实现。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

本文分享C进行归并排序的具体代码,供大家参考。具体内容如下

一、思路:稳定排序

(1) Partition:调用Partition进程,直到子序列为空或者只有一个元素。Log2 (n)是必需的;

(2)合并:将两个子序列从小到大合并成一个序列。

二、实现程序:

//合并排序:(双向合并)

//(1)递归分解数组;

//(2)合并有序序列

#包括iostream

使用命名空间std

//合并两个有序序列

模板类型名T

void Merge(T arr[],int start,int mid,int end) {

int i,j,k,n1,N2;

k=0;

n1=中期开始1;

n2=末端-中间;

T *L=新T[n1],*R=新T[N2];

for(I=0;i n1I) //将arr的左边部分赋给l。

l[I]=arr[start I];

for(j=0;j n2J) //将arr的右边部分赋给r。

r[j]=arr[mid j 1];

I=0;

j=0;

k=开始;

While(i n1 j n2) {//merge

if(L[i]=R[j]) {

arr[k]=L[I];

我;

}否则{

arr[k]=R[j];

j;

}

k;

}

而(i n1) {//左边部分没有完成。

arr[k]=L[I];

k;

我;

}

而(j n2) {//右边部分没有完成。

arr[k]=R[j];

k;

j;

}

删除[]L;

删除[]R;

}

//合并排序

模板类型名T

void MergeSort(T arr[],int start,int end) {

int mid

if(开始=结束)

返回;

mid=(起始端)/2;

MergeSort(arr,start,mid);

MergeSort(arr,mid 1,end);

Merge(arr,start,mid,end);

}

//输出数组

模板类型名T

void Print(T arr[],int n) {

int I;

for(I=0;I n;我)

cout arr[I]' ';

cout endl

}

int main(int argc,const char * argv[]) {

int n,I,arr[50];

Cout '请输入要排序的数字个数:';

CIN n;

srand((int)time(NULL));//将时间设置为一个随机点

for(I=0;I n;I) //生成N个随机数

arr[I]=rand()% 100;

排序前的“Cout”:

Print(arr,n);

MergeSort(arr,0,n-1);//调用合并排序

排序后的“Cout”:

Print(arr,n);

返回0;

}

测试结果:

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • vs2015打包安装程序,vs2015程序打包,VS2022实现VC++打包生成安装文件图文详细历程
  • vc++6.0的快捷键,vc 快捷键
  • vc++6.0的快捷键,vc 快捷键,VC6.0常用快捷键大全
  • 绘制圆角矩形的方法,c++ 画矩形,C#画圆角矩形的方法
  • 懒汉式和饿汉式代码,单列模式懒汉和饿汉,C++单例模式的懒汉模式和饿汉模式详解
  • 好用的C++编译器,c++编译软件哪个好
  • semaphore c#,c++ semaphore
  • semaphore c#,c++ semaphore,C++中Semaphore内核对象用法实例
  • dev-c++使用教程,dev c++安装教程
  • dev-c++使用教程,dev c++安装教程,Dev C++ 安装及使用方法(图文教程)
  • C里面指针常量和常量指针的区别,c++指针常量和常量指针
  • C里面指针常量和常量指针的区别,c++指针常量和常量指针,简单总结C++中指针常量与常量指针的区别
  • com组件初始化失败,c#开发com组件,C++中COM组件初始化方法实例分析
  • c++静态成员变量使用,c++静态成员函数和静态成员变量
  • c++静态成员变量使用,c++静态成员函数和静态成员变量,详解c++ 静态成员变量
  • 留言与评论(共有 条评论)
       
    验证码: