在java中快速排序的交换方法

问题描述:

任何人都可以帮助我找出这种交换方法,它是较大的快速排序程序的一部分吗?它应该采用一个数组和两个整数并交换整数指示的索引位置。在java中快速排序的交换方法

private static <T extends Comparable<T>> int partition(T[] table, int first, int last) { 
    T pivot = table[first]; 
    int up = first; 
    int down = last; 

    do { 
     while ((up < last) && (pivot.compareTo(table[up]) >= 0)) { 
      up++; 
     } 
     while (pivot.compareTo(table[down]) < 0) { 
      down--; 
     } 
     if (up < down) { 
      swap(table, up, down); 
     } 
    } 

    while (up < down); 
    swap(table, first, down); 
    return down; 
} 

交换方法目前未定义,我不知道如何让它工作。我曾尝试编写该方法:

void swap(T[] array, int a, int b) { 
    T temp = array[a]; 
    array[a] = array[b]; 
    array[b] = temp; 
} 

但是我一直收到T无法解析为类型的错误。但是,当我尝试将类型更改为int时,该方法在上面调用的位置不起作用。

您需要将通用类型<T>添加到您的swap方法中。类似于

static <T> void swap(T[] array, int a, int b) { 
    T temp = array[a]; 
    array[a] = array[b]; 
    array[b] = temp; 
} 
+0

我也试过,并且我的swap方法调用仍然说“方法swap(T [],int,int)未定义为类型QuickSort”我将方法定义在与private static相同的级别上> int partition(T [] table,int first,int last) – Teej

+0

不知道它的工作原理,事实证明,我刚刚没有编译过一会儿哈哈。非常感谢 – Teej

如果您正在执行除作业分配之外的任何快速排序,请不要浪费时间。使用Collections.sort()。

+0

这是一项家庭作业 – Teej