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();
        }
    
    }
  • 相关阅读:
    堆栈、堆、方法区介绍
    spring 定时器
    fastJSON 使用总结
    [Python]collections.defaultdict()模块使用
    LeetCode 18.四数之和
    [Python]调用shell cmd的几种方式
    LeetCode 16. 最接近的三数之和
    Objective C 十六进制 十进制互转
    LeetCode 15. 三数之和
    要做的题
  • 原文地址:https://www.cnblogs.com/gaopeng527/p/4480314.html
Copyright © 2011-2022 走看看