zoukankan      html  css  js  c++  java
  • 归并排序(递归排序and外排排序)

    分析:

    /**
     * 归并排序  (先将数组利用归并排序排成 有序的左边数组和右边数组,再比较左边数组和右边数组的数值大小进行排序)
     *
     */
    public class MergeSort {
        public static void mergeSort(int[] arr){
            if(arr.length<2 || arr==null){
                return;
            }
            mergeSort(arr,0,arr.length-1);
        }
        public static void mergeSort(int[] arr,int L,int R){
            if(L==R){
                return;
            }
            //中点位置
            int mid=L+((R-L)>>1);
            mergeSort(arr,L,mid);
            mergeSort(arr,mid+1,R);
            merge(arr,L,mid,R);
        }
        public static void merge(int[] arr,int L,int mid,int R){
            //临时数组存储
            int[] help=new int[R-L+1];
            //记录临时数组位置
            int i=0;
            //记录左边数组位置
            int p1=L;
            //记录右边数组位置
            int p2=mid+1;
            while (p1<=mid && p2<=R){
                help[i++]=arr[p1]<arr[p2]?arr[p1++]:arr[p2++];
            }
            //()将再将左边数组or右边数组中,排好序但是数值大,没有比较的数值放入临时数组中
            while (p1<=mid){
                help[i++]=arr[p1++];
            }
            while (p2<=R){
                help[i++]=arr[p2++];
            }
            //将排好序的临时数组的数值放入原来数组中
            for (int j = 0; j < help.length; j++) {
                arr[L+j]=help[j];
            }
        }
        //测试
        public static void main(String[] args) {
            //随机生成10个 1~40的数进行测试
            Random ran=new Random();
            int[] te=new int[10];
            for (int i = 0; i < 10; i++) {
                 te[i]=ran.nextInt(40) + 1;
            }
            mergeSort(te);
            for (int i = 0; i < te.length; i++) {
                System.out.print(te[i]+" ");
            }
        }
    
    }
  • 相关阅读:
    Vmware 可用的激活码
    查询某网址的百度收藏量
    SQL 分页实现
    JS 分页实现
    分页逻辑分析
    Mysql总结概述
    解析select *
    teradata中EXPLAIN执行计划总结
    Teradata Join类型
    Teradata中join总结
  • 原文地址:https://www.cnblogs.com/axu521/p/10440107.html
Copyright © 2011-2022 走看看