zoukankan      html  css  js  c++  java
  • 归并排序

    归并排序执行流程:

    public class MergeSort {
        public static void main(String[] args) {
            int arr[]={2,3,4,0,3,5,15,23};
            mergeSort(arr,0,arr.length-1);
            System.out.println(Arrays.toString(arr));
        }
        public static void mergeSort(int []arr,int L,int R)
        {
            if (L==R)
                return;
            int mid=(L+R)/2;
            //处理左边
            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 temp[]=new int[R-L+1];
           //记录第一个数组中需要遍历的下标
           int i=L;
           //记录第二个数组中需要遍历的下标
           int j=mid+1;
           //用于记录在临时数组中存放的下标
            int inedx=0;
           //遍历两个数组去除小的放入临时数组
           while (i<=mid&&j<=R)
           {
               temp[inedx++]=arr[i]<arr[j]?arr[i++]:arr[j++];
    //           if (arr[i]<=arr[j])
    //           {
    //               //将小的数放入临时数组
    //               temp[inedx]=arr[i];
    //               //下标向后移动
    //               i++;
    //           }else {
    //               //将小的数放入临时数组
    //               temp[inedx]=arr[j];
    //               //下标向后移动
    //               j++;
    //           }
    //           //移动临时数组下标;
    //           inedx++;
           }
           //处理第二个数组多余的情况
           while (j<=R)
           {
               temp[inedx++]=arr[j++];
           }
           //处理第一个数组多余的情况
           while (i<=mid)
           {
               temp[inedx++]=arr[i++];
           }
           //将临时数组中的数组重新存入原数组
           for (int k=0;k<temp.length;k++)
           {
               arr[L+k]=temp[k];
           }
        }
    
    }
  • 相关阅读:
    3.2 线程复用:线程池
    3.1.7 线程阻塞工具类:LockSupport
    3.1.6 循环栅栏:CyclicBarrier
    3.1.4 读写锁
    3.1.5 倒计时器:CountDownLatch
    3.1.3 允许多个线程同时访问:信号量
    3.1.2 condition 条件
    3.1.1 重入锁 以及源码分析
    2.8.4 错误的加锁
    jsp中 scope="application" 表示
  • 原文地址:https://www.cnblogs.com/dloading/p/10803856.html
Copyright © 2011-2022 走看看