zoukankan      html  css  js  c++  java
  • 归并排序——算法系列

    归并排序:

    主要思想是,将一列无序数,无限分组,直至分成单个元素,然后归并,因为归并前,两组数据都已经有序,所以复杂度要小。

    代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Test
    {
        class Program
        {
            static void Main(string[] args)
            {
                int[] array = { 3, 1, 2, 9, 7, 8, 6 };
                Console.WriteLine("排序前:" + string.Join(",", array));
                MergeSort(array, new int[array.Length], 0, array.Length - 1);
                Console.WriteLine("排序后:" + string.Join(",", array));
                Console.ReadLine();
            }
    
            static void MergeSort(int[] array, int[] temparray, int left, int right)
            {
                if (left < right)
                {
                    int middle = (left + right) / 2;
                    MergeSort(array, temparray, left, middle);
                    MergeSort(array, temparray, middle + 1, right);
                    Merge(array, temparray, left, middle + 1, right);
                }
            }
    
            static void Merge(int[] array, int[] temparray, int left, int middle, int right)
            {
                int leftEnd = middle - 1;
                int rightStart = middle;
                int tempIndex = left;
                int tempLength = right - left + 1;
                while (left <= leftEnd && rightStart <= right)
                {
                    if (array[left] < array[rightStart])
                        temparray[tempIndex++] = array[left++];
                    else
                        temparray[tempIndex++] = array[rightStart++];
                }
                while (left <= leftEnd)
                    temparray[tempIndex++] = array[left++];
                while (rightStart <= right)
                    temparray[tempIndex++] = array[rightStart++];
                for (int i = 0; i < tempLength; i++)
                {
                    array[right] = temparray[right];
                    right--;
                }
            }
        }
    }

    总结:这个归并排序还是要重新看下,没有怎么理解到其中的精髓。

  • 相关阅读:
    nginx和tomcat访问图片和静态页面的配置方法
    centos7上mysql5.6版本主从复制
    centos7上编译安装mysql5.6
    js去除空格
    屏蔽F1~F12的快捷键的js函数
    js屏蔽浏览器(IE和FireFox)的刷新和右键等功能
    禁止选中页面内容-兼容ie、firefox、chrome
    js获取网页上选中的部分,包含html代码
    一个账号只能在一个地方登陆一次
    c#创建window服务
  • 原文地址:https://www.cnblogs.com/7ants/p/2960586.html
Copyright © 2011-2022 走看看