zoukankan      html  css  js  c++  java
  • 数组实现二路归并排序

    使用数组实现二路归并排序

    #include<iostream>
    #include<algorithm>
    #include<vector>
    #include<set>
    #include<list>
    #include<queue>
    using namespace std;
    
    void merge(vector<int>&arr,int left1,int right1,int left2,int right2){
    	int i=left1,j=left2;
    	vector<int>res;
    	while(i<=right1&&j<=right2){
    		if(arr[i]<=arr[j]){
    			res.push_back(arr[i]);
    			i++;
    		}
    		else{
    			res.push_back(arr[j]);
    			j++;
    		}
    	}
    	
    	while(i<=right1){
    			res.push_back(arr[i]);
    			i++;
    	}
    	while(j<=right2){
    			res.push_back(arr[j]);
    			j++;		
    	}
    	j=0;
    	for(i=left1;i<=right2;i++){
    		arr[i]=res[j++];
    	}
    	return;
    }
    void merge_sort(vector<int>&arr,int left,int right){
    	if(left>=right)
    	     return;
    	merge_sort(arr,left,left+(right-left)/2);
    	merge_sort(arr,left+(right-left)/2+1,right);
    	merge(arr,left,left+(right-left)/2,left+(right-left)/2+1,right);
    	return;
    }
    int main(){
       vector<int>arr;
       int n;
       cin>>n;
       while(n--){
       	int tmp;
       	cin>>tmp;
       	arr.push_back(tmp);
       }
      merge_sort(arr,0,arr.size()-1);
      for(int tmp:arr){
      	cout<<tmp<<" ";
      }
    }
  • 相关阅读:
    面向对象-01
    网络编程-02-客户端搭建
    网络编程-01-服务端搭建
    日志-02
    日志-01
    md5加密
    shell 第五天
    shell第四天
    shell第三天
    shell
  • 原文地址:https://www.cnblogs.com/qiuhaifeng/p/11576409.html
Copyright © 2011-2022 走看看