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

    #include<bits/stdc++.h>
    using namespace std;
    int a[20]={9,5,12,3,6,44,55,221,15,51,69,100};
    int b[10086];//临时数组
    void hb(int low,int mid,int high)
    {
    int n=high-low+1;
    int i=low,end1=mid;
    int j=mid+1,end2=high;
    int k=0;
    while(i<=end1&&j<=end2)
    {
    if(a[i]<=a[j]) b[k]=a[i++];//将a[i],a[j]较小的那个赋给b[k] ,改变if里的大小可以改变排序方式(从小到大或从大到小
    else b[k]=a[j++];
    k++;
    }
    while(i<=end1) b[k++]=a[i++];//
    while(j<=end2) b[k++]=a[j++];
    for(int x=0;x<k;x++)
    a[low+x]=b[x];
    }
    void gbpx(int low,int high)
    {
    if(low<high)
    {
    int mid=low+(high-low)/2;//二分
    gbpx(low,mid);//左递归
    gbpx(mid+1,high);//右递归
    hb(low,mid,high);//二路合并
    }
    }
    int main()
    {
    gbpx(0,11);
    for(int i=1;i<=10;i++)
    cout<<a[i]<<' ';
    return 0;
    }

    注:老老实实地从0开始

  • 相关阅读:
    sscanf功能详解(转)
    String to Integer (atoi)
    Reverse Words in a String
    在一个字符串中寻找某个字串
    回文数
    Two Sum
    java 判断牌型?
    股票的最大利润
    队列的最大值
    加密和解密例子
  • 原文地址:https://www.cnblogs.com/ywjblog/p/7694261.html
Copyright © 2011-2022 走看看