快速排序

来源:互联网 发布:了解算法看哪本书 编辑:程序博客网 时间:2024/06/15 12:33

快读排序采用的是分治的思想。
快速排序是找出一个元素作为基准值pivot,然后对数组进行分区操作,使得基准值左边的元素不大于基准值,基准值右边的元素不小于基准值。
基准值:pivot
i:左下标
j:右下标
算法:1.从右往左扫描,找到第一个比基准值小的值,二者进行交换
2.从左往右扫描,找到第一个比基准值大的值,二者进行交换
3.当i-start>1时,递归调用,quickSort(a,0,i-1)
4.当end-j>1时,递归调用,quickSort(a,j+1,end)
java程序如下:

public void quickSort(int []a,int start,int end){    int i,j;    i=start;    j=end;    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;        }        while(i<j&&a[i]<a[j])            i++;        if(i<j){            int temp=a[i];            a[i]=a[j];            a[j]=temp;        }    }    if(i-start>1){        quickSort(a,start,i-1);    }    if(end-j>1){        quickSort(a,j+1,end);    }}
0 0
原创粉丝点击