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

    public class quickSort{
    public static void main(String[] args){
    int[] intArray={12,11,45,6,8,43,40,57,3,5,9,10,18,16,1};
    System.out.println("before sort:");
    for(int i=0;i<intArray.length;i++){
    System.out.print(" "+intArray[i]);
    if((i+1)%5==0)
    System.out.println();
    }
    System.out.println();
    int[] b=quickSort(intArray,0,intArray.length-1);
    System.out.println("quickly sorted:");
    for(int i=0;i<b.length;i++){
    System.out.print(" "+b[i]);
    if((i+1)%5==0)
    System.out.println();
    }
    }
    public static int getMiddle(int[] array,int left,int right){
    int temp;
    //进行快排,并返回中心点位置
    int mid=array[left];
    while(left<right){
    while(left<right&&array[right]>=mid)
    right--;
    temp=array[right];
    array[right]=array[left];
    array[left]=temp;
    while (left<right&&array[left]<=mid)
    left++;
    temp=array[right];
    array[right]=array[left];
    array[left]=temp;
    }
    array[left]=mid;//中心移到正确的位置
    return left;
    }
    public static int[] quickSort(int[] array,int left,int right){
    if(left<right-1){//开始点和结束点没有重合到一起,指针没有执行到末尾
    int mid=getMiddle(array,left,right);//重新获取中间点
    quickSort(array,left,mid-1);
    quickSort(array,mid+1,right);
    }
    return array;
    }
    }

  • 相关阅读:
    线段树
    坐标离散化
    超大背包问题
    折半枚举 双向搜索
    弹性碰撞
    反转 开关问题
    尺取法
    二分法
    最小生成树
    区间素数筛法
  • 原文地址:https://www.cnblogs.com/sunshinewxz/p/4525185.html
Copyright © 2011-2022 走看看