相似歸併排序,只是不須要輔助空間。ios
#include<iostream> using namespace std; int swap(int ds[],int begin,int mid,int end){ int lb=begin; for(int rb=mid;rb<end;rb++){ int temp=ds[rb]; int i=rb; for(;i>lb;i--) ds[i]=ds[i-1]; ds[i]=temp; lb++; } return 0; } int spotMerge(int ds[],int begin,int mid,int end){ int i=begin,j=mid+1,index=mid+1; while(i<j && i<=end && j<=end){ while(ds[i]<ds[j] &&i<j) i++; while(ds[j]<ds[i] &&j<=end) j++; swap(ds,i,index,j); } return 0; } int mySpotMergeSort(int unSorted[],int begin,int end){ if(begin<end){ int mid=(begin+end)/2; mySpotMergeSort(unSorted,begin,mid); mySpotMergeSort(unSorted,mid+1,end); spotMerge(unSorted,begin,mid,end); } return 0; } int main(){ int data[7]={1,2,3,4,5,6,7}; mySpotMergeSort(data,0,6); return 0; }