标签:
注意理解分治和递归思想,选出一个基数(挖一个坑),从右往左找比基数小的进行交换,再从左往右找比基数大的进行交换。
java:
public static void adjustArray(Integer[] arr, int l, int r) {
if (l < r) {
int i = l, j = r;
int k = arr[l];
while (i < j) {
while (i < j && k < arr[j]) {
j--;
}
arr[i] = arr[j];
while (i < j && k > arr[i]) {
i++;
}
arr[j] = arr[i];
}
arr[i] = k;
adjustArray(arr, l, i - 1);
adjustArray(arr, i + 1, r);
}
}
参考:
标签:
原文地址:http://my.oschina.net/cjun/blog/519036