Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 快速计算比较和互换_Java_Sorting_Quicksort - Fatal编程技术网

Java 快速计算比较和互换

Java 快速计算比较和互换,java,sorting,quicksort,Java,Sorting,Quicksort,我正在对从文件中读取的2000个整数进行快速排序,但比较和交换的数量似乎很高。我的柜台在正确的地方吗?还是这类产品有问题 public int partition(int array[], int low, int high) { int pivot = array[high]; int i = (low-1); for (int j = low; j < high; j++) {

我正在对从文件中读取的2000个整数进行快速排序,但比较和交换的数量似乎很高。我的柜台在正确的地方吗?还是这类产品有问题

public int partition(int array[], int low, int high) 
    { 
        int pivot = array[high];  
        int i = (low-1); 
        for (int j = low; j < high; j++) 
        {
            compCounter++;
            if (array[j] <= pivot) 
            { 
                i++; 
                int temp = array[i]; 
                array[i] = array[j]; 
                array[j] = temp; 
                SwapCounter++;
            } 
        } 

        int temp = array[i+1]; 
        array[i+1] = array[high]; 
        array[high] = temp; 
        SwapCounter++;

        return i+1; 
    } 

    public void quickSort(int array[], int low, int high) 
    { 
        if (low < high) 
        { 
            int pivotPoint = partition(array, low, high); 
            quickSort(array, low, pivotPoint-1); 
            quickSort(array, pivotPoint+1, high); 
        } 
    } 
公共int分区(int数组[],int低,int高)
{ 
int pivot=数组[高];
int i=(低-1);
对于(int j=低;j<高;j++)
{
compCounter++;

如果(数组[j]您的计数器是正确的


只是一个简单的建议-将交换代码移动到一个单独的函数交换(数组、fromIndex、toIndex)

否。我认为这是正确的。如果您的算法是O(n)这并不意味着您将看到n个比较或交换或任何其他操作。这意味着如果您的集合大小是两倍大,那么交换/比较的数量也将是两倍大。您的计数器有多高?我预计在0到4000000之间,有2000个整数,但对于CompCon,大多数在~10000到~20000之间特