c\c++版
void quick_sort_r(int *arr, int start, int end)
{
if (start > end)
return;
int left = start, right = end;
int mid = arr[start];
while (left < right)
{
while (left < right && arr[right] >= mid)
right--;
arr[left] = arr[right];
while (left < right && arr[left] <= mid)
left++;
arr[right] = arr[left];
}
arr[left] = mid;
quick_sort_r(arr, start, left - 1);
quick_sort_r(arr, left + 1, end);
}
void quick_sort(int *arr, int len)
{
quick_sort_r(arr, 0, len - 1);
}
java版
public static void quickSortR(int[] arr, int start, int end) {
if (start > end)
return;
int left = start, right = end, mid = arr[start];
while (left < right) {
while (left < right && arr[right] >= mid)
right--;
arr[left] = arr[right];
while (left < right && arr[left] <= mid)
left++;
arr[right] = arr[left];
}
arr[left] = mid;
quickSortR(arr, start, left - 1);
quickSortR(arr, left + 1, end);
}
public static void quickSort(int[] arr) {
quickSortR(arr, 0, arr.length - 1);
}
python版
def quick_sort_r(l, start, end):
if start > end:
return
left, right, mid = start, end, l[start]
while left < right:
while left < right and l[right] >= mid:
right -= 1
l[left] = l[right]
while left < right and l[left] <= mid:
left += 1
l[right] = l[left]
l[left] = mid
quick_sort_r(l, start, left - 1)
quick_sort_r(l, left + 1, end)
def quick_sort(l):
if not type(l) is list:
return
if l is None:
return
quick_sort_r(l, 0, len(l)-1)
JavaScript版
function quick_sort(array) {
if (!array instanceof Array) return;
if (array.length === 0) return;
function quick_sort_r(arr, start, end) {
if (start > end) return;
let left = start, right = end, mid = arr[start]
while (left < right) {
while (left < right && arr[right] >= mid) right--;
arr[left] = arr[right];
while (left < right && arr[left] <= mid) left++;
arr[right] = arr[left];
}
arr[left] = mid;
quick_sort_r(arr, start, left - 1);
quick_sort_r(arr, left + 1, end);
}
quick_sort_r(array, 0, array.length - 1)
}