二路归并排序

来源:互联网 发布:杭州摄影俱乐部 知乎 编辑:程序博客网 时间:2024/05/22 04:24
// 二路归并排序


#include<iostream>
#include<string>
using namespace std;


void mergeArray(int array[], int first, int last){
int size = last-first+1;
int* temp = new int[size];

int mid = first+(last-first)/2;
int begin1=first, begin2=mid+1;
int end1=mid, end2=last;

int i=0;

while( begin1<=end1 && begin2<=end2 ){
if(array[begin1]<array[begin2]){
temp[i++] = array[begin1++];
}else{
temp[i++] = array[begin2++];
}
}
while( begin1<=end1 ){
temp[i++] = array[begin1++];
}
while( begin2<=end2 ){
temp[i++] = array[begin2++];
}
cout<<"size="<<size<<endl;
for(int i=0; i<size; ++i){
array[first+i]=temp[i];
}
delete[] temp;
}


void binarySort(int array[],int begin,int end){
if( begin>=end ){
return ;
}
int mid = begin + (end-begin)/2;
binarySort(array,begin,mid);
binarySort(array,mid+1,end);
mergeArray(array,begin,end);

}




int main(){
int array[10] = {
1,2,3,4,5,9,7,6,8,0
};


binarySort(array,0,9);

for(int i=0; i<10; ++i){
cout<<array[i]<<" ";
}

return 0;
0 0
原创粉丝点击