c_cpp C ++中的合并排序算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp C ++中的合并排序算法相关的知识,希望对你有一定的参考价值。
/*
* Merge Sort Algorithm
* Language: C++
* Created by: Harish R
*/
#include<iostream>
#include<stdlib.h>
using namespace std;
void merge(int *a, int *l, int nL, int *r, int nR)
{
// int nL = sizeof(l)/sizeof(int);
// int nR = sizeof(r)/sizeof(int);
int i=0,j=0,k=0;
while(i < nL && j < nR)
{
if(l[i] < r[j])
a[k++] = l[i++];
else
a[k++] = r[j++];
}
while(i < nL)
{
a[k++] = l[i++];
}
while(j < nR)
{
a[k++] = r[j++];
}
}
void mergesort(int *a, int len)
{
if(len<2)
return;
int mid = len/2;
int *left = (int *)malloc(mid*sizeof(int));
int *right = (int *)malloc(sizeof(int)*(len-mid));
for(int i=0;i<mid;i++)
left[i] = a[i];
for(int i=mid;i<len;i++)
right[i-mid] = a[i];
mergesort(left, mid);
mergesort(right, len-mid);
merge(a, left, mid, right, len-mid);
}
int main()
{
int a[] = {2,4,1,6,8,5,3,7};
cout <<"Original Array:" <<endl;
for(int i=0;i<8;i++)
cout << a[i] << " ";
cout <<endl;
mergesort(a, 8);
for(int i=0;i<8;i++)
cout << a[i] <<" ";
cout <<endl;
}
以上是关于c_cpp C ++中的合并排序算法的主要内容,如果未能解决你的问题,请参考以下文章
【Leetcode题目-03】数组排序算法题目
排序算法入门之归并排序(java实现)
算法之排序算法——桶排序
合并排序算法中的 C++“以 std::out_of_range:vector 类型的未捕获异常终止”错误
排序算法概念以及插入排序算法实现(C语言)
C语言中的排序算法--冒泡排序,选择排序,希尔排序