#include<iostream>
using namespace std;
void merge(int arr[],int tempArr[],int start,int mid,int end)
{
int i=start,j=mid+1,k=start;
while(i<=mid && j<=end)
{
if(arr[i]<arr[j]){
tempArr[k++]=arr[i++];
}else{
tempArr[k++]=arr[j++];
}
}
while(i<=mid) tempArr[k++]=arr[i++];
while(j<=end) tempArr[k++]=arr[j++];
for(i=start;i<=end;i++){
arr[i]=tempArr[i];
}
}
void mergeSort(int arr[],int tempArr[],int start,int end){
if(end>start){
int mid=(start+end)/2;
mergeSort(arr,tempArr,start,mid);
mergeSort(arr,tempArr,mid+1,end);
merge(arr,tempArr,start,mid,end);
}
}
int main()
{
int arr[]={1,2,3,4,8,5,6,7,9};
int size=sizeof(arr)/sizeof(arr[0]);
int *tempArr=new int[size];
mergeSort(arr,tempArr,0,size-1);
for(int i=0;i<size;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
delete [] tempArr;
return 0;
}
【day-8】归并排序
最新推荐文章于 2024-03-06 22:16:35 发布