关于算法:快速排序C语言实现

void exchange(int* x, int* y)
{
  int temp = *x;
  *x = *y;
  *y = temp;
}
// 疾速排序是一种旧址排序,不须要调配新的数组空间
// start和end为子数组的起始地位与终止地位
int partition(int *arr, int start, int end)
{
  int temp;
  // 获取主元
  int key = arr[end];
  // left不存在,故将i去值为start-1
  int i = start - 1;
  for (int j = start; j < end; j++)
  {
    if (arr[j] <= key)
    {
      i = i + 1;
      exchange(arr + i, arr + j);
    }
  }
  exchange(arr + i + 1, arr + end);
  return i + 1;
}
void quickSort(int *arr, int start, int end)
{
  if (start < end)
  {
    int mid = partition(arr, start, end);
    quickSort(arr, start, mid - 1);
    quickSort(arr, mid + 1, end);
  }
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理