快速排序-c\c++版、java版、python版、JavaScript版

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)
}

猜你喜欢

转载自blog.csdn.net/csdn_meng/article/details/100552521