正如卡尔在评论中已经提到的那样,该任务等同于快速排序算法中的分离步骤,除了您必须首先找到样本中位数并将其用作枢轴元素.
计算中值可以用O(n)运算来计算,参与步骤也是线性的(O(n)),因此总体最坏情况性能仍然优于完全排序(O(n log(n)).
算法将如下所示(标准方法需要实现):
public int[] roughSort(int[] input) {
int pivot = findMedian(input);
int[] result = partition(input, pivot);
return result;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
184 次 |
最近记录: |