分享

QuickSort

 moonboat 2011-09-18
package harry.algorithms;

import org.junit.Test;

import java.util.Arrays;

/**
 * Created by IntelliJ IDEA.
 * User: Administrator
 * Date: 11-9-18
 * Time: 下午8:14
 * To change this template use File | Settings | File Templates.
 */
public class QuickSort {

/**
*
* @param A
* @param p
* @param r
*
* the i,j,p,r of below of pseudo code are the number of which element,
* not the index.But pay attention, in the real code, will change to index.
*
* x = A[r]  //pivot element 主元,支点
* i = p-1
* for j=p to r-1
* if A[j] <= x
* i++;
*   exchange A[i] with A[j]
*
*  exchange A[i+1] with A[r]
*  return i+1
*/
private int partition(int[] A,int p, int r) {
int x = A[r]; //pivot element
int i = p-1;
for (int j=p; j<r; j++) {
    if (A[j]<=x) {
i++;
exchange(A,i,j);
}
}
exchange(A,i+1,r);
return i+1;
}

private void exchange(int[] A, int i, int j) {
int k= A[i];
A[i] = A[j];
A[j] = k;
}

public void quickSort(int[] A, int p, int r) {
if (p<r) {
int q = partition(A, p, r);
quickSort(A, p, q-1);
quickSort(A, q+1, r);
}

}

@Test
public void test(){
int[] A={2,8,7,1,3,5,6,4};
quickSort(A, 0,A.length-1);
System.out.println(Arrays.toString(A));
}


}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约