相关疑难解决方法(0)

QuickSelect算法理解

我一直在研究讨论快速排序和快速选择的各种教程和文章,但是我对它们的理解仍然不稳定.

鉴于这种代码结构,我需要能够掌握并解释quickselect的工作原理.

// return the kth smallest item
int quickSelect(int items[], int first, int last, int k) {
    int pivot = partition(items, first, last);
    if (k < pivot-first) {
        return quickSelect(items, first, pivot, k);
    } else if (k > pivot) {
        return quickSelect(items, pivot+1, last, k-pivot);
    } else {
        return items[k];
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要一些帮助来分解伪代码,虽然我没有提供分区功能代码,但我想了解在提供quickselect功能的情况下它会做什么.

我知道quicksort是如何工作的,只是没有快速选择.我刚才提供的代码就是如何格式化快速选择的一个例子.

编辑:更正后的代码是

int quickSelect(int items[], int first, int last, int k) 
{
    int pivot = partition(items, first, last);
    if (k < pivot-first+1) 
    { //boundary was wrong …
Run Code Online (Sandbox Code Playgroud)

algorithm quickselect

28
推荐指数
2
解决办法
5万
查看次数

标签 统计

algorithm ×1

quickselect ×1