归并排序

本文详细介绍了使用C++语言实现快速排序和归并排序的完整代码,通过重写别人的程序来深入理解算法实现细节,并提供了实际运行结果验证。通过比较两种排序算法在不同数据集上的性能表现,旨在提升对算法效率的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

读了别人的程序,自己重写了一遍,完整代码如下:

#include<iostream>
using namespace std;

#define MAXSIZE 10

void print(int a[],int size = MAXSIZE)
{   
	int i;
	for(i=0;i<size;i++)
		cout<<a[i]<<" ";
	cout<<endl;
}

void merge_array(int a[],int first,int mid,int last,int temp[])
{
   if(first>mid||mid>last) return;
   int i,j,k;
   i=first;
   j=mid+1;
   k=0;
   while(i<=mid&&j<=last)
   {
	   if(a[i]<=a[j]) 
		   temp[k++]=a[i++];
	   else 
		   temp[k++]=a[j++];
   }
   while(i<=mid) temp[k++]=a[i++];
   while(j<=last) temp[k++]=a[j++];
   i=first;
   k=0;
   while(i<=last) a[i++]=temp[k++];
}

void merge_divide(int a[],int first,int last,int temp[])
{
   int mid;
   if(first<last)
   {
	   mid = (first+last)/2;
	   merge_divide(a,first,mid,temp);
	   merge_divide(a,mid+1,last,temp);
	   merge_array(a,first,mid,last,temp);
   }
}


void merge_sort(int a[],int size,int temp[])
{
   if(size<=1) return; 
   merge_divide(a,0,size-1,temp);
}

int main()
{   
	int a[MAXSIZE]={1,4,5,8,12,14,3,18,13,10};
    int temp[MAXSIZE];
	merge_sort(a,MAXSIZE,temp);
	print(a);
	system("pause");
	return 1;
}


参考地址:http://blog.youkuaiyun.com/morewindows/article/details/6678165#comments


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值