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

    #include<iostream>
    #include<fstream>
    #define N 10000
    using namespace std;
    ifstream fin("Merge_sort.in");
    ofstream fout("Merge_sort.out");

    int a[N],n;
    void Init(){
         int i;
         fin>>n;
         for(i=1;i<=n;i++)
         fin>>a[i];
         }
    void Merge(int i,int mid,int j){
         int b[N],l,t,k;
         t=i;k=mid+1;l=1;
         while(t<=mid&&k<=j){
          if(a[t]<a[k]) {b[l]=a[t];t++;}
          else {b[l]=a[k];k++;}
          l++;              
                             }
         while(t<=mid) {b[l]=a[t];l++;t++;}
         while(k<=mid) {b[l]=a[k];l++;k++;}
         for(t=1;t<l;t++)
         a[i+t-1]=b[t];
        
         }
    void Mergesort(int i,int j){
         if(i>=j) return;
         int mid=(i+j)/2;
         Mergesort(i,mid);
         Mergesort(mid+1,j);
         Merge(i,mid,j);
         }    

    int main()
    {
        int i;
        Init();
        Mergesort(1,n);
        for(i=1;i<=n;i++)
        fout<<a[i]<<"    ";
        return 0; 
        }
     

  • 相关阅读:
    Java的Set集合中的retainAll()方法
    蒲丰投针问题
    根据贝叶斯公式求解三门问题
    概率论公式(续)
    数字(number)
    寻找最美的你(select)
    木棍
    lowbit
    搜索题
    day7
  • 原文地址:https://www.cnblogs.com/noip/p/2279822.html
Copyright © 2011-2022 走看看