• 归并排序


    归并排序采用的是分治的思想

    将数组对半,再对半,再对半,再对半。。。直到最后的每一个数都成单独的一块(这里就是递归了,左半边递归,右半边递归)

    再将拆开后的数组合并,合并是有序的合并,升序为例,则小的在前,大的在后。

    最终得到的数组就是有序的数组

    //这是一个归并排序,拆分加合并的方法
        public static int[] mergeSort(int [] array, int start, int end){
            if(start < end){
                //向左侧拆分递归
                int mid = (start + end) / 2;
                mergeSort(array,start,mid);
                mergeSort(array,mid+1,end);
    
                //归并,调用下面写的方法
                merge(array,start,mid,end);
            }
            return array;
        }
    
        public static void merge(int [] array, int left , int mid ,int right){
            int [] temp = new int [array.length];
            int start1 = left;//这是左边的指针,就是开始的指针
            int start2 = mid + 1;
            int t = left;//
    
            //第一步:按照左右两个半边进行合并,指针遍历小的就放进辅助数组temp中,直到有一边的数据以及全部放完
            while(start1 <= mid && start2<=right){
                if(array[start1]<=array[start2])
                    temp[t++]=array[start1++];
                else
                    temp[t++]=array[start2++];
            }
    
            //第二步:将左边或者右边没有填充完的数据直接添加到temp辅助数组中
            while (start1 <= mid){
                temp[t++] = array[start1++];
            }
            while (start2 <= right){
                temp[t++] = array[start2++];
            }
    
            //第三步:将temp数组复制到array数组中
            for (int i = left; i <=right; i++) {
                array[i] = temp[i];
            }
        }
  • 相关阅读:
    IHttpHandler做文件防盗链接
    使用SQL的全文搜索功能构建 Web 搜索应用程序
    Google 二维条码 API
    Flash Media Server 入门教程
    Janus WinForms Controls Suite v2.0.1000
    如何将数据大容量加载到合并发布中的表(复制 TransactSQL 编程)
    转:CentOS 5.4下的Memcache安装
    转:用php读取xml数据
    HPUX启动和关闭
    目录,文件操作详谈—php
  • 原文地址:https://www.cnblogs.com/zzxisgod/p/13335970.html
Copyright © 2020-2023  润新知