簡體   English   中英

詞典快速排序算法

[英]Lexicographic quicksort algorithm

我的教授為我提供了一種方法,用於按字典順序對名稱數組進行排序的方法的代碼,但是我不知道如何在主類中編寫什么內容以表明程序有效。 我對Java非常陌生,因此如果您知道如何執行此操作,可以將其編寫為對我來說盡可能簡單。 提前致謝。

這是班

public class quicksort_class {

int[] array1 = new int[11];


public quicksort_class(int[] w)
{
    array1 = w;
}

private static void sort(String[] string, int leftlimit, int rightlimit) {

    if (rightlimit > leftlimit) 
    {
    int midpoint = partitionstep(string, leftlimit, rightlimit);

    sort(string, leftlimit, midpoint - 1);

    sort(string, midpoint, rightlimit);
    }
}

public static int partitionstep(String[] string, int leftlimit, int rightlimit)
{   
    String midpoint = string[rightlimit];

    int lpointer = leftlimit;

    int rpointer = rightlimit;

    String temp = "";

    while(string[lpointer].compareTo(midpoint) <= 0)
    {
        lpointer = lpointer ++;
    }
    while(string[rpointer].compareTo(midpoint) > 0)
    {
        rpointer = rpointer --;
    }

    if(lpointer > rpointer)
    {
        temp = string[lpointer];

        string[lpointer] = string[rightlimit];

        string[rpointer] = temp;

        System.out.println(string);
    }

    while(lpointer < rpointer)
    {
        temp = string[lpointer];

        string[lpointer] = string[rightlimit];

        string[rightlimit] = temp;
    }

    return lpointer;
   }
}

這是主要課程(如您所見,我不知道該寫些什么)

package quicksort;

public class Quicksort {

public static void main(String[] args) {


 }
}

編寫一些東西來建立一個字符串數組,並調用對它進行sort ,然后打印出結果或根據已知的良好結果進行檢查。

理想情況下,編寫重復執行此操作的內容,尤其要檢查不尋常的組合(已反向排序或已排序,數組中為null,相同值出現多次或所有值都相同...)

如果您想超越此范圍,則需要深入研究代碼以了解其極端情況並進行具體測試,和/或進行“代碼覆蓋率”分析(有工具可以幫助您),以確保該代碼已被執行。

假設sort方法的算法正確:1.如果main方法在quicksort_class主體內,則可以直接將sort方法稱為sort(arrayToBeSorted,0,arrayToBeSorted.length-1)。 並且應該在調用后按字典順序對arrayToBeSorted進行排序。 您可以檢查以確認。 2.如果main方法在其他類中,則作為當前的main方法,您至少需要將sort方法的私有前綴更改為public,然后調用quicksort_class.sort(arrayToBeSorted,0,arrayToBeSorted.length-1)。

一些提示:1.方法定義的專用前綴意味着只能在當前類體內調用此方法。 2.方法定義的靜態前綴意味着您應該直接通過類名而不是通過類的實例來調用此方法。

順便說一句,您能提供array1屬性代表什么嗎? 我不明白為什么它在那里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM