zoukankan      html  css  js  c++  java
  • 练手之 合并排序

    package algorithm;
    import java.util.ArrayList;
    import java.util.List;
    public class mergemy {
     public static void main(String[] args) {
      List<Integer> list = new ArrayList<Integer>();
      list.add(99);
      list.add(98);
      list.add(99);
      list.add(100);
      list.add(50);
      list.add(33);
      list.add(22);
      
      System.out.println(mergesort(list).toString());
     }
     public static List<Integer> mergesort(List<Integer> list) {
      if (list.size() < 2) {
       return list;
      }
      return merge(mergesort(list.subList(0, list.size() / 2)), mergesort(list.subList(list.size() / 2, list.size())));
     }
     public static List<Integer> merge(List<Integer> left, List<Integer> right) {
      List<Integer> result = new ArrayList<Integer>();
      int j = 0;
      
      for (int i = 0; i < left.size(); i++) {
       Integer valueLeft = left.get(i);
       for (; j < right.size();) {
        Integer valueRight = right.get(j);
        if (valueLeft <= valueRight) {
         result.add(valueLeft); //左值小,加入左值,然后获取一个新的左值来比较;
         break;
        }else {
         result.add(valueRight); //右值小,加入右值,然后获取一个新的右值来比较;
         j++;
         continue;
        }
       }
       
       if (j >= right.size()) {
        result.add(valueLeft); //右值比完了,直接放入左值;
       }
      }
      
      for (;j<right.size();j++) {
       //右值还没有比完,加入右值
       result.add(right.get(j));
      }
      return result;
     }
    }
  • 相关阅读:
    SQL Server 调优系列进阶篇
    封装 RabbitMQ.NET
    RabbitMQ 的行为艺术
    SQL Server 调优系列进阶篇
    SQL Server 调优系列进阶篇
    FastFrameWork 快速开发框架
    SQL Server 调优系列进阶篇
    Java基础:三目运算符
    marquee标签,好神奇啊...
    Java JFrame 和 Frame 的区别
  • 原文地址:https://www.cnblogs.com/unixshell/p/3305840.html
Copyright © 2011-2022 走看看