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

    这里采用的是算法导论上的快速排序算法,它的主要思想是:

    递归快速排序不说了,主要介绍如何做partition,首先定义两个变量i和j,i的物理意义是表示小于pivot的最后一个元素,j的物理意义是不断向前走,直到比pivot小的元素,然后和i+1元素交换。最后,要把pivot放到合适的位置,由于i表示小pivot的最后一个元素,所以要让pivot和i+1元素交换。

    代码如下:

    package introjava;
    
    public class QuickSort3 {
        public static void quickSort(int [] list, int p, int r){
            int q;
            if(p < r){
                q = partition(list, p, r);
                quickSort(list, p, q - 1);
                quickSort(list, q + 1, r);
            }
        }
        public static int partition(int []list, int p, int r){
            int i = p - 1;
            int pivot = list[r];
            
            for(int j = p; j < r; j++){
                if(list[j] <= pivot){
                    i++;
                    int temp = list[i];
                    list[i] = list[j];
                    list[j] = temp;
                }
            }
            int temp = list[i + 1];
            list[i + 1] = list[r];
            list[r] = temp;
            return i+1;
        }
        public static void main(String []args){
    //        int [] list = {1,2,3,4,5,6};
            int [] list = {5, 2, 9, 3, 8, 4, 5, 5, 0, 1, 6, 7};
            
            for(int i = 0; i < list.length; i++)
                System.out.print(list[i] + " ");
            System.out.print("
    ");
            
            quickSort(list, 0, list.length - 1);
            
            for(int i = 0; i < list.length; i++)
                System.out.print(list[i] + " ");
        }
    }
  • 相关阅读:
    JSON和Object数组在js中的转换
    Raphael绘制箭头arrow
    Web后台框架开发
    数据库开发
    docker
    git
    linux
    正则表达式工具
    python模拟ls命令
    python3基础
  • 原文地址:https://www.cnblogs.com/hansonzhe/p/3596305.html
Copyright © 2011-2022 走看看