二路归并排序
来源:互联网 发布:杭州摄影俱乐部 知乎 编辑:程序博客网 时间: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;
}
#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
- 归并排序:二路归并
- 归并排序--二路归并
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- SAMPLE SCRIPT TO CREATE SALES ORDER USING OE_ORDER_PUB.PROCESS_ORDER
- 黑马程序员-Java中静态绑定和动态绑定
- 修改a标签height,width的方法
- POSIX---互斥锁(pthread_mutex)和条件变量(pthread_cond)的用法
- 7个示例科普CPU Cache
- 二路归并排序
- Using the this API wsh_deliveries_pub.Delivery_Action to ship confirm for the delvery
- leetcode_Find Minimum in Rotated Sorted Array II
- Postman的安装与使用
- java 调用存储过程
- InputStream,String,File相互转化
- Android Monkey Test
- CSS overflow 属性
- MTL_SALES_ORDERS