您的位置:首页 > 其它

快速排序

2016-03-26 23:30 274 查看
思路:采用分治思想,每次划分时将该组的第一个数字作为轴值,划分后在该轴值左边的数均不大于该轴值,轴值右边的数均不小于该轴值。再递归划分轴值两边的组。

import java.util.*;
import static java.lang.System.*;

public class Main{
static Scanner in = new Scanner(System.in);

static int Partition(int a[],int first,int last)
{
int i=first,j=last;
while(i<j)
{
while(i<j&&a[i]<=a[j]) j--;
if(i<j)
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
i++;
}
while(i<j&&a[i]<=a[j]) i++;
if(i<j)
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
j--;
}
}
return i;
}

static void QuickSort(int a[],int first,int last)
{
if(first<last)
{
int pivot=Partition(a,first,last);
QuickSort(a,first,pivot-1);
QuickSort(a,pivot+1,last);
}
}

public static void main(String[] args)
{
int a[] = {3,2,9,7,5,4};
QuickSort(a,0,a.length-1);
for(int elem:a)
out.print(elem);
out.println();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: