当前位置:   article > 正文

数据结构--排序(下)_给定一个无序序列a[10] = {4,3,1,2,6,5,0,9,8,7},请用归并算法实现排序(分

给定一个无序序列a[10] = {4,3,1,2,6,5,0,9,8,7},请用归并算法实现排序(分别采用

1、归并排序

   归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
   归并排序的基本思想就是把两段有序的子区间归并成有序的,具体如图所示:
思路
   例子:给定数组a[8]={10,6,7,1,3,9,4,2};
示例

1.1代码实现

//归并排序
void _MergeSort(int*a, int begin, int end, int *tmp)
{
   
	//拆分
	if (begin >= end)
	{
   
		return;
	}
	int mid = (begin + end) >> 1;
	_MergeSort(a, begin, mid, tmp);
	_MergeSort(a, mid + 1, end, tmp);

	//合并
	int begin1 = begin, end1 = mid;
	int begin2 = mid + 1, end2 = end;//分成两个无序序列[begin,mid][mid+1,end]
	int tindex = begin;
	while (begin1 <= end1 && begin2 <= end2)
	{
   
		if (a[begin1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号