zoukankan      html  css  js  c++  java
  • 分治算法

    结构上是递归的,为了解决给定的问题,算法一次或者多次递归调用自身,解决紧密相关的子问题,通常有三个步骤:

    1. 分解:将问题分级为若干个子问题
    2. 解决:对子问题进行递归求解,如果子问题足够小,则直接求解
    3. 合并:子问题的解还原为原问题的解

    使用归并法排序:

    static void Main(string[] args)
    {
        //产生随机序列
        var rand = new Random();
        List<int> sequence = new List<int>();
        int length = 18;
        for (int i = 0; i < length; i++)
        {
            sequence.Add(rand.Next()%10);
            Console.Write("{0}	", sequence[i]);
        }
        //归并法排序
        Merge_Sort(sequence, 0, length-1);
        //输出排序后的序列
        Console.WriteLine();
        for (int i = 0; i < length; i++)
        {
            Console.Write("{0}	", sequence[i]);
        }
    }
    static void Merge_Sort(List<int> sq, int s, int e)
    {
        if (s < e)
        {
            int q = (s + e) / 2;
            Merge_Sort(sq, s, q);
            Merge_Sort(sq, q+1, e);
            Merge(sq, s, q, e);
        }
    }
    static void Merge(List<int> sq, int s, int m, int e)
    {
        List<int> sequenceL = new List<int>();
        for (int i = s; i <= m; i++)
            sequenceL.Add(sq[i]);
        List<int> sequenceR = new List<int>();
        for (int i = m+1; i <= e; i++)
            sequenceR.Add(sq[i]);
        int li = 0, ri = 0;
        for (int k = s; k <= e; k++)
        {
            if (li >= sequenceL.Count)
            {
                sq[k] = sequenceR[ri];
                ri++;
                continue;
            }
            if (ri >= sequenceR.Count)
            {
                sq[k] = sequenceL[li];
                li++;
                continue;
            }
            if (sequenceL[li] < sequenceR[ri])
            {
                sq[k] = sequenceL[li];
                li++;
            }
            else
            {
                sq[k] = sequenceR[ri];
                ri++;
            }
        }
    }
  • 相关阅读:
    ef mysql
    mvc RedirectToAction、mobile 重定向地址栏未改变
    避免复制引用程序集的XML文件
    端口扫描工具
    Python简单全双工聊天器
    Python半双工聊天程序
    Python简单服务器程序
    python+scrapy爬取亚马逊手机商品
    python+scrapy爬取知乎日报全站文章
    简单直接排序
  • 原文地址:https://www.cnblogs.com/qiusuo/p/5207115.html
Copyright © 2011-2022 走看看