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;
    }

  • 相关阅读:
    委托
    文件流
    关于.netFramework概述
    深拷贝与浅拷贝
    序列化与反序列化
    关于可空值类型
    正则表达式
    基于WF4.0的公文管理系统
    Mahout中相似度计算方法介绍
    Mahout源码目录说明
  • 原文地址:https://www.cnblogs.com/z1141000271/p/5341456.html
Copyright © 2011-2022 走看看