【day-8】归并排序

    xiaoxiao2021-03-25  111

    #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; }
    转载请注明原文地址: https://ju.6miu.com/read-25480.html

    最新回复(0)