首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速排序-比较/交换计数器

快速排序-比较/交换计数器
EN

Stack Overflow用户
提问于 2015-10-04 14:29:09
回答 1查看 498关注 0票数 0

早上好。我编写了一个程序,在一个包含2000项的数组上实现了几种不同的排序方法,并为每种排序方法生成了比较和交换的数量。

当我选择快速排序方法时,它会给出以下输出:

“交易所数目:1

比较数:2

交易所数目:1

比较数:2

交易所数目:1

比较数:6

交易所数目:1

比较数:2

交易所数目:1

..。

..。

快速分拣完成。

这是一个使用气泡的例子,我希望输出是这样的:

比较数目:1999年

交易所数目:0

气泡分类完成。

我知道我需要移动比较和交换计数器,但我不知道要将它们移到哪里才能收到预期的结果。

有人能帮忙吗?

我真的很感激!快把我逼疯了。

以下是我的快速排序代码:

代码语言:javascript
复制
    // QUICK SORT
public static void quickSort(AnyType[] array, int low, int high)
{
    int i = low, j = high, comparisons = 0, exchanges = 0;
    AnyType temp, pivot = array[(low + high)/2];

    while (i <= j)
    {
        while(array[i].isLessThan(pivot))
        {
            i++;
            comparisons++;
        }
        while(array[j].isBetterThan(pivot))
        {
            j--;
            comparisons++;
        }
        if (i <= j) {
            temp = array[i];
            array[i] = array[j];
            array[j] = temp;
            i++;
            j--;
            exchanges++;
        }
    }

    if (low < j) 
    {
        quickSort(array, low, j);
    }
    if (i < high) 
    {
        quickSort(array, i, high);
    }

    System.out.println("Number of comparisons: "+ comparisons);
    System.out.println("Number of exchanges: "+ exchanges);
}
EN

回答 1

Stack Overflow用户

发布于 2015-10-04 14:41:38

您正在递归地调用quickSort()本身。对于每次迭代,当它从后续调用返回时,它将执行println代码。您需要确保打印代码仅在方法的最外层(第一次)迭代时执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32934554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档