zoukankan      html  css  js  c++  java
  • 归并排序

    1.非递归版本

    #include <iostream>
    #include <string>
    using namespace std;
    void MergePass(int *arr,int *temp,int len,int step);
    void merge(int *temp,int *arr,int low,int mid,int high);
    
    void BottomUpSort(int *arr,int len){
        int step=1;
        int *temp=new int[len];
        while(step<len){
            MergePass(arr,temp,len,step);
            step=step*2;
        }
    }
    void MergePass(int *arr,int *temp,int len,int step){
        int i=0;
        while(i+2*step<=len){
              merge(temp,arr,i,i+step-1,i+2*step-1);
              i=i+2*step;
        }
        if(i+step<len)
            merge(temp,arr,i,i+step-1,len-1);
    }
    void merge(int *temp,int *arr,int low,int mid,int high){
        int i=low;
        int j=mid+1;
        int k=0;
        while(i<=mid&&j<=high){
            if(arr[i]<arr[j])
                temp[k++]=arr[j++];
            else
                temp[k++]=arr[i++];
        }
            while(j<=high)
                temp[k++]=arr[j++];
            while(i<=mid)
                temp[k++]=arr[i++];
            for(int i=0;i<k;i++){
                arr[low+i]=temp[i];
            }
    }
    int main(){
        int arr[9]={112,34,45,21,3,6,89,11,67};
        BottomUpSort(arr,9);
        
        
    }
  • 相关阅读:
    团队站立会议09
    团队站立会议08
    团队绩效
    团队站立会议07
    团队站立会议06
    团队站立会议05
    团队站立会议04
    团队站立会议03
    团队站立会议02
    反转链表
  • 原文地址:https://www.cnblogs.com/kkshaq/p/4540965.html
Copyright © 2011-2022 走看看