zoukankan      html  css  js  c++  java
  • 基础为技术之本_归并排序

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

    public static void MergeSort(int[] array,int start,int end)
            {
                if (array == null || start > end)
                    return;
    
                if(start < end)
                {
                    int mid = (start + end) / 2;
                    MergeSort(array, start, mid);
                    MergeSort(array, mid + 1, end);
                    Merge(array, start, mid, end);
                }
            }
    
            static void Merge(int[] array,int start,int mid,int end)
            {
                int[] temp = new int[end - start + 1];//中间数组
    
                int i = start;//左开头
                int j = mid + 1;//右开头
    
                int k = 0;
                while (i <= mid && j <= end)//把较小的数先移到新数组中
                {
                    if (array[i] <= array[j])
                    {
                        temp[k++] = array[i++];
                    }
                    else
                    {
                        temp[k++] = array[j++];
                    }
                }
                // 把左边剩余的数移入数组
                while (i <= mid)
                {
                    temp[k++] = array[i++];
                }
                // 把右边边剩余的数移入数组
                while (j <= end)
                {
                    temp[k++] = array[j++];
                }
    
                // 把新数组中的数覆盖nums数组
                for (int p = 0; p < temp.Length; p++)
                {
                    array[start + p] = temp[p];
                }
            }
  • 相关阅读:
    linux 下ip命令对比ifconfig命令
    Redis使用详细教程
    shell中eval命令
    在Ubuntu 14.04 上安装 FTP 服务
    这本将shell的书应该不错
    linux sh 脚本调用外部命令
    c语言char 和int的问题
    ubuntu网卡ip的配置
    js中获取时间new date()的用法
    react 组件之间的通信
  • 原文地址:https://www.cnblogs.com/zangjiapei/p/11444072.html
Copyright © 2011-2022 走看看