算法--快速排序

来源:互联网 发布:c语言abs 编辑:程序博客网 时间:2024/05/31 19:34

快速排序:

快速排序采用二分法,选数组中(start为i,end为j)一个元素作为基数(下标point),把数组分为小于、大于基数的两段子数组 (i,point-1与 point+1,j),然后递归对子数组进行快速排序。最关键的点就是寻找point。

public int getPoint(int[] arr, int i, int j) {    int key = arr[i];    while (i < j) {        if (i < j && key <= arr[j]) {            j--;        }        if (i < j) {            arr[i++] = arr[j];        }        if (i < j && key >= arr[i]) {            i++;        }        if (i < j) {            arr[j--] = arr[i];        }    }    arr[i] = key;    return i;}

public void quickSort(int[] arr, int i, int j) {    if (i < j) {        int point = getPoint(arr, i, j);        quickSort(arr, point + 1, j);        quickSort(arr, i, point - 1);    }}

0 0
原创粉丝点击