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

    不多说 先上模板

    #include<stdio.h>
    void carry(int a[],int first,int mid,int last,int temp[])//将两个有序的数组合并
    {
      int i=first,j=mid,m=mid+1,n=last,k=0;
      while(i<=j&&m<=n)//  比较两个数组的第一位  将较小的数放入temp 直到一个数组遍历结束 
      {
       if(a[i]<a[m])
       temp[k++]=a[i++];
       else temp[k++]=a[m++];
      }
      while(i<=j) temp[k++]=a[i++];
      while(m<=n) temp[k++]=a[m++];
      for(i=0;i<k;i++)
      {
          a[first++]=temp[i];// 将排序好的数组放回 a

      }
    }
    void sort(int a[],int first,int last,int temp[])// 不断的将数组二分直到数组的长度为1 然后依次有序合并(有点像二叉树原理)
    {
      int mid;
      if(first<last)// 长度为一的时候结束
      {
          mid=(first+last)/2;
          sort(a,first,mid,temp);
          sort(a,mid+1,last,temp);// 不断二分
          carry(a,first,mid,last,temp); //将分好的两个数组有序合并
      }

    }
    int main()
    {
     int a[10]={0,7,1,2,9,5,4,6,8,3},temp[12],i;
     sort(a,1,9,temp);
     for(i=1;i<=9;i++) printf("%d",a[i]);
     return 0;
    }

  • 相关阅读:
    select函数
    ascy_finder|base|cookie 代码测试
    正则表达式之道
    教务系统破解
    jquery API
    test
    如何获取和发送Http请求和相应
    header中ContentDisposition的作用
    Performance Testing 系列
    LINQ
  • 原文地址:https://www.cnblogs.com/z1141000271/p/5341456.html
Copyright © 2011-2022 走看看