博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序算法(2)归并排序
阅读量:5088 次
发布时间:2019-06-13

本文共 1433 字,大约阅读时间需要 4 分钟。

  • 算法思想
    将原问题分解为几个规模较小但类似于原问题的子问题,递归的求解这些子问题,然后再合并这些子问题的解来建立原问题的解。
  • 归并排序操作
    分解:将待排序的包含n个元素的序列分解为各含n/2个元素的子序列
    解决:使用归并排序递归的排序两个子序列
    合并:合并两个子序列以产生已排序的答案
  • 归并排序算法时间复杂度 θ(nlgn)
  • 归并排序伪代码实现
    排序子数组A[p..r]中的元素
  • 归并排序之C#实现

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace MergeSort{    class Program    {        static void Main(string[] args)        {            Random rd = new Random();            int[] data = new int[49];            for (int i = 0; i < data.Length; i++)            {                data[i] = rd.Next(100);            }            MergeSort(data, 0, data.Length-1);        }        static void MergeSort(int[] arr,int p,int r)        {            //排序子数组arr[p..r]中的元素            if (p >= r) return;            int q =(int)Math.Floor((p + r) / 2.0); //Math.Floor向下取整            MergeSort(arr, p, q);            MergeSort(arr, q + 1, r);            Merge(arr, p, q, r);        }        static void Merge(int[] arr,int p,int q,int r)        {            //假设arr[p..q]和arr[q+1,r]都已排好序            //从两个数组中取较小的元素至输出数组中,知道其中一个输入数组为空,            //然后将剩余输入数组中元素全部移到输出数组,为了避免在每一步都判断输入数组是否为空,            //在两个输入数组尾部放置一个哨兵 inf            int n1 = q - p + 1;            int n2 = r - q;            //创建左右两个新的数组            int[] LeftArr = new int[n1 + 1];            int[] RightArr = new int[n2 + 1];            for(int i=0;i

     

     

     

转载于:https://www.cnblogs.com/larry-xia/p/8416612.html

你可能感兴趣的文章
c# 泛型+反射
查看>>
第九章 前后查找
查看>>
Python学习资料
查看>>
jQuery 自定义函数
查看>>
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
ActiveMQ与spring整合
查看>>
web服务器
查看>>
第一阶段冲刺06
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
JS取得绝对路径
查看>>
排球积分程序(三)——模型类的设计
查看>>
HDU 4635 Strongly connected
查看>>
格式化输出数字和时间
查看>>
页面中公用的全选按钮,单选按钮组件的编写
查看>>
java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
查看>>
(旧笔记搬家)struts.xml中单独页面跳转的配置
查看>>
不定期周末福利:数据结构与算法学习书单
查看>>
strlen函数
查看>>
python的列表与shell的数组
查看>>
关于TFS2010使用常见问题
查看>>