排序算法代码---归并排序

原创 2008年07月12日 00:11:00
#include <stdio.h>
void mergeSort(int A[], int len);
void show(int A[], int len);
int main()
{
	int A[] = {1, 3, 2, 5, 7};
	int len = 5;
	mergeSort(A, 5);
	show(A, 5);
	return 0;
}
// A[p..q]和A[q+1..r]是已排序数组,该函数实现A[p..r]排序
void merge(int A[], int p, int q, int r)
{
	int *S = new int[r-p+1];
	int i = p;
	int j = q + 1;
	int k = 0;
	while (i <= q && j <= r)
		if (A[i] <= A[j])
			S[k++] = A[i++];
		else S[k++] = A[j++];
	while (i <= q)
		S[k++] = A[i++];
	while (j <= r)
		S[k++] = A[j++];
	for (i=0; i<k; ++i)
		A[p++] = S[i];
	delete []S;
	return ;
}
void mergeSort(int A[], int p, int r)
{
	if (r > p)
	{
		int q = (p + r) / 2;
		mergeSort(A, p, q);
		mergeSort(A, q + 1, r);
		merge(A, p, q, r);
	}
	return ;
}
void mergeSort(int A[], int len)
{
	mergeSort(A, 0, len-1);
	return ;
}
void show(int A[], int len)
{
	for (int i=0; i<len; ++i)
		printf("%d/n", A[i]);
	return ;
}

归并排序及代码实现

自己实现归并排序+快速排序,二者都是嵌套加递归 归并排序: //归并排序 #include #include using namespace std; void merge_sort(i...
  • chuchus
  • chuchus
  • 2014年03月22日 20:30
  • 1394

八大内部排序 -- 归并排序

归并排序(merge-sort):将两个或两个以上的有序列表组合成一个新的有序表,合并的m,n长度的两个表的复杂度为O(m+n),n个数的序列进行归并共有ceil(logn)次,每一次合并都是n常数级...
  • Szu_AKer
  • Szu_AKer
  • 2016年08月31日 23:49
  • 471

单链表排序(快速排序、归并排序)

本题目来源于LeetCode,具体如下: Sort a linked list in O(n log n) time using constant space complexity. 题目要求...
  • doufei_ccst
  • doufei_ccst
  • 2014年03月26日 22:53
  • 10000

排序——归并排序(Merge Sort)及应用

归并排序:是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子...
  • nie2314550441
  • nie2314550441
  • 2016年02月26日 13:01
  • 325

比较排序之插入和归并排序

排序之插入和归并插入排序: 对于少量的元素的排序,插入排序是一个很有效的算法。其原理很简单,类似于我们打扑克的时候,开始时,我们左手为空并且桌上的牌面向下,然后,我们每次从桌子上拿走一张牌并将它...
  • tao2035333
  • tao2035333
  • 2016年09月17日 21:01
  • 767

C语言之归并排序

即将两个都升序(或降序)排列的数据序列合并成一个仍按原序排列的序列。 上代码: #include #include #define m 6 #define n 4 int main()...
  • morixinguan
  • morixinguan
  • 2016年02月09日 20:07
  • 2915

Java排序算法(三)--归并排序(MergeSort)递归与非递归的实现

归并排序的思想是: 1.将原数组首先进行两个元素为一组的排序,然后合并为四个一组,八个一组,直至合并整个数组; 2.合并两个子数组的时候,需要借助一个临时数组,用来存放当前的归并后...
  • y999666
  • y999666
  • 2016年03月21日 09:39
  • 3228

关系型数据库工作原理-归并排序(翻译自Coding-Geek文章)

本文翻译自Coding-Geek文章:《 How does a relational database work》。原文链接:http://coding-geek.com/how-databases-...
  • ylforever
  • ylforever
  • 2016年04月22日 06:58
  • 1482

排序算法(四)——归并排序与递归

基本思想 分析归并排序之前,我们先来了解一下分治算法。 分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。 ...
  • u012152619
  • u012152619
  • 2015年08月08日 00:03
  • 5576

归并排序和外部排序

归并排序和外部排序 2016-08-03 21:33 94人阅读 评论(0) 收藏 举报  分类: Java语言基础(7)  版权声明:本文为博主原创文章,...
  • jfkidear
  • jfkidear
  • 2016年10月27日 16:43
  • 2436
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:排序算法代码---归并排序
举报原因:
原因补充:

(最多只允许输入30个字)