zoukankan      html  css  js  c++  java
  • java实现快速排序

    把整个序列看做一个数组,把第零个位置看做中轴,和最后一个比,如果比它小交换,比它大不做任何处理;交换了以后再和小的那端比,比它小不交换,比他大交换。这样循环往复,一趟排序完成,左边就是比中轴小的,右边就是比中轴大的,然后再用分治法,分别对这两个独立的数组进行排序。

    package com.daqing.test;
    
    public class Sort {
        
        /**
         * 快速排序,对整数型数组o进行
         * @param o
         * @param low
         * @param hight
         */
        public static void quiteSort( int[] o , int low , int hight ){
                  if(low < hight){
                           int povitePosition = adjust(o,low,hight);
                           quiteSort( o , low , povitePosition - 1);
                           quiteSort( o , povitePosition + 1 , hight );
                  }
        }
        /**
         * 进行调整
         * @param o
         * @param low
         * @param hight
         * @return
         */
        private static int adjust( int[] o , int low , int hight ){//选定枢轴为low所对应的值
                  int pivote = o[low];
                  while(low < hight){
                           while(hight > low && compare( pivote , o[hight] ) <= 0 ){// 高位找到比povite大,则符合要求,继续寻找
                                    hight -- ;
                           }
                           o[low] = o[hight] ;
                           while(low < hight && compare( pivote , o[low] ) >= 0){ //低位开始找到比povite小,符合要求,继续寻找
                                    low ++ ;
                           }
                           o[hight] = o[low];
                  }
                  o[low] = pivote ;
                  return low;
        }
       
        /**
         *
         * @param num1 减数
         * @param num2 被减数
         * @return
         */
        private static int compare(int num1, int num2) {
                  return num1 - num2 ;
        }
        /**
         * @param args
         */
        public static void main(String[] args) {
                  int[] i = {26,53,48,15,13,46,32,15,0};
                  quiteSort(i, 0, i.length-1);
                  for(int ii:i){
                           System.out.print(ii+" ");
                  }
        }
    }
  • 相关阅读:
    尚硅谷韩顺平Linux教程学习笔记
    第15章 自动编码器
    问题总结
    日常问题记录
    SQLServer日常bug记录
    .NetCore使用NLog写入数据库总结
    C#操作XML文档
    C#中的 ?/?:/?? 三者的区别及用法
    git 命令从入门到放弃
    通过反射技术获得类中的所有属性
  • 原文地址:https://www.cnblogs.com/lxq0309/p/3666629.html
Copyright © 2011-2022 走看看