zoukankan      html  css  js  c++  java
  • 排序算法 快速排序源码

    package algorithm;

    import java.security.SecureRandom;
    import java.util.Arrays;
    import java.util.Random;

    public class QuickSort {

     
     public static void quickSort(int[] pData,int left,int right){
      int pivotpos;
      if(left < right){
       pivotpos = partion(pData,left,right);
       quickSort(pData, left, pivotpos);
       quickSort(pData, pivotpos+1, right);
      }
     }
     
     public static int partion(int[] pData,int low,int high){
      int middle = pData[low];
      while(low < high){
       while(low < high && pData[high] >= middle){
        high -- ;
       }
       if(low < high ){
        pData[low++] = pData[high];
       }
       while(low < high && pData[low] <= middle){
        low++;
       }
       if(low < high){
        pData[high--] = pData[low];
       }
       pData[low] = middle;
      }
      return low;
     }
     
     public static void main(String[] args) {
      /**
       * 第一种测试方法
       */
    //  int[] pData = new int[]{49,38,65,97,76,13,27} ;
    //  quickSort(pData, 0, pData.length-1);
    //  System.out.println(Arrays.toString(pData));
      
      /**
       * 第二种测试方法
       */
    //  int[] pData = new int[1000000];
    //  Random random = new SecureRandom();
    //  for(int i=0;i<pData.length;i++){
    //   pData[i] = random.nextInt(1000000000);
    //  }
    ////  System.out.println(Arrays.toString(pData));
    //  
    //   long time = System.currentTimeMillis();
    //   //System.out.println(System.currentTimeMillis()+"  "+Runtime.getRuntime().freeMemory());
    //   quickSort(pData, 0, pData.length-1);
    //   //System.out.println(System.currentTimeMillis()+"  "+Runtime.getRuntime().freeMemory());
    //   System.out.println(System.currentTimeMillis()-time);
    //  System.out.println(Arrays.toString(pData));
       
      /**
       * 第三种测试方法
       */
      
    //  for(int i=0;i<10000;i++){
    //   int[] pData = new int[]{3,2,1,4,5,6,7};
    //   quickSort(pData, 0, pData.length-1);
    //   System.out.println(Arrays.toString(pData));
    //  }
      int[] datas = new int[]{3,2,1,4,5,6,7};
      long time = System.currentTimeMillis();
      for(int i=0;i<10000000;i++)
      {
       quickSort(datas, 0, datas.length-1);
      }
      System.out.println(System.currentTimeMillis()-time);
      for (int i = 0; i <datas.length; i++) {
       System.out.println(datas[i]);
      }
      

     }
    }

  • 相关阅读:
    ARP病毒的分析与防治思路
    sqlserver存储过程参数拼接
    自定义函数
    asp.net 文件流操作
    asp.net 国际化
    一个用户登录权限的基本例子
    更新密码,判断旧密码存储过程
    SQLSerVer计算1100之间所有能被3整除的数的个数及总和
    等待2小时2分零10秒后才执行sql语句
    C#实现按日期命名上传文件代码
  • 原文地址:https://www.cnblogs.com/xinzhuangzi/p/4100455.html
Copyright © 2011-2022 走看看