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

    归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。

    如 设有数列{6,202,100,301,38,8,1}

      初始状态: [6] [202] [100] [301] [38] [8] [1] 比较次数

      i=1 [6 202 ] [ 100 301] [ 8 38] [ 1 ] 3

      i=2 [ 6 100 202 301 ] [ 1 8 38 ] 4

      i=3 [ 1 6 8 38 100 202 301 ] 4

      总计: 11次

    #include <stdio.h>
    #include <string.h>
    #define N 10
    int b[N];
    void ms(int l,int r,int *a)
    {
        if(l>=r)
         return;
        int m=(l+r)/2;
        ms(l,m,a);
        ms(m+1,r,a);
        int i=l,j=m+1,s=l,bi=l;
        while(i<=m||j<=r) // 以下是归并的实现
        {
            if(j>r||i<=m&&a[i]<=a[j]) 
              b[bi++]=a[i++];
            else
              b[bi++]=a[j++];
        }
        for(s=l;s<=r;s++)//这个不能漏掉噢
          a[s]=b[s];
    }
    int main()
    {
        int a[N];
        int i;
        for(i=0;i<N;i++)
          scanf("%d",&a[i]);
        ms(0,N-1,a);
        for(i=0;i<N;i++)
          printf("%d ",a[i]);
        return 0;
    }

                                                             ----------江财小子

  • 相关阅读:
    Jmeter 脚本录制
    Scrapy 爬虫模拟登陆的3种策略
    Scrapy Shell
    Ipython
    XPath helper
    python3 接口测试数据驱动之操作mysql数据库
    Pandas 基础(17)
    Pandas 基础(16)
    在 Laravel 项目中使用 Elasticsearch 做引擎,scout 全文搜索(小白出品, 绝对白话)
    Pandas 基础(15)
  • 原文地址:https://www.cnblogs.com/372465774y/p/2421630.html
Copyright © 2011-2022 走看看