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

7次阅读

共计 454 个字符,预计需要花费 2 分钟才能阅读完成。

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);
  }
}
正文完
 0