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

    1. 以首元素作为分界值

    package com.cn.gao;
    
    public class QuickSort {
        public static final int SIZE=10;
        //快速排序的一次划分
        public static int partition(int[] a,int left, int right){
            int temp,l,r;
            l=left;
            r=right;
            temp=a[l];    //将首元素作为分界值
            while(l<r){
                while(a[r]>temp&&l<r) r--;
                if(l<r){
                    a[l]=a[r];
                    l++;
                }    
                while(a[l]<temp&&l<r) l++;
                if(l<r){
                    a[r]=a[l];
                    r--;
                }
            }
            a[l]=temp;
            return l;
        }
        //快速排序算法
        public static void quickSort(int[] a,int left,int right){
            int p;
            if(left<right){
                p=partition(a,left,right);
                quickSort(a,left,p-1);
                quickSort(a,p+1,right);
            }
        }
        
        public static void main(String[] args) {
            int[] a = new int[SIZE];
            //为数组赋值
            for(int i=0;i<a.length;i++){
                a[i] = (int) (100 + Math.random()*100);
            }
            //输出排序前的数组
            System.out.println("排序前的数组为:");
            for(int i=0;i<a.length;i++){
                System.out.print(a[i]+" ");
            }
            System.out.println();
            //对数组排序
            quickSort(a,0,a.length-1);
            //输出排序后的数组
            System.out.println("排序后的数组为:");
            for(int i=0;i<a.length;i++){
                System.out.print(a[i]+" ");
            }
            System.out.println();
        }
    
    }
  • 相关阅读:
    HDU6397
    容斥原理推导错排通项公式
    重复排列的证明
    圆排列证明
    rock-paper-scissors
    The more, The Better
    趁着情人节写点东西
    分层图最短路问题
    背包问题是否装满问题
    Python面向对象编程扑克牌发牌程序,另含大量Python代码!
  • 原文地址:https://www.cnblogs.com/gaopeng527/p/4480314.html
Copyright © 2011-2022 走看看