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

    归并排序

    归并排序是将原始数组拆分成若干个子序列,将子序列排序完以后再合并起来。

     public static int [] mergrSort(int[] arr){
           Sort(arr,0,arr.length-1);
           return arr;
      }

       public static void Sort(int[] arr,int left,int right){
           //判断数组中有几个元素,如果只有一个元素,那是有序的,下标不合理会出现数组下标越界
           if(left >= right){
               return;
          }
           //取出数组的中间元素,并保存
           int mid = (left + right)/2;
           //递归循环中间元素的左边
           Sort(arr,left,mid);
           //递归循环中间元素的右边
           Sort(arr,mid+1,right);
           //将分开的数组有序的合并起来
           //调用合并方法
           merge(arr,left,mid,right);

      }


       public static void merge(int [] arr,int left,int center,int right){
       //建立一个空数组,来临时存储排序的数组
       int [] tempArr = new int[arr.length];
       //临时数组的索引,并赋值,用于随时增加
           int t = left;
           //临时数组的索引,用于最后临时数组向arr数组中移动元素中
           int tmp = left;
           //右边数组的第一个下标
           int mid  =center +1;

           while (left <= center && mid <= right){
               if(arr[left]<= arr[mid]){//左边数组元素小于右边
                   tempArr[t++] = arr[left++];//将左边小的数组放进临时数组中,并向后移动索引
              }
               else{
                   tempArr[t++] = arr[mid++];//将右边较小的元素放进临时数组中,并向后移动索引
              }

          }
           //将左边数组剩下的元素放进临时数组中
           while(left <= center){//等号不能忘记
               tempArr[t++] =arr[left++];
          }
           //将右边数组中剩余的元素放进临时数组中
           while (mid <=right){
               tempArr[t++] = arr[mid++];
          }
           //将临时数组中元素放进原数组arr里
           while(tmp<=right){
               arr[tmp] = tempArr[tmp++];
          }
      }

     

  • 相关阅读:
    Linux设置系统时间并同步到硬件
    centos6.9安装mysql5.7.22并设置初始密码
    mysql修改数据库文件存储位置
    mysql1.7(mysql优化,mysql-mmm软件介绍,mysql高可用集群。)
    mysql1.6(主从同步,数据读写分离)
    Mysql1.5(binlog增量备份与恢复,innobackupex)
    Mysql1.4(用户授权,权限撤销;图形管理工具,数据备份-恢复)
    MYSQL1.3(存储引擎,数据导入导出,管理表记录)
    MYSQL1.2(字段管理,索引类型)
    mysql1.1(搭建,数据类型,基本使用)
  • 原文地址:https://www.cnblogs.com/stydejava/p/13403110.html
Copyright © 2011-2022 走看看