2014-02-14 3 views
0

Мой профессор дал мне код для методов, которые будут использоваться при сортировке массива имен лексикографически, но я понятия не имею, как писать внутри основного класса, чтобы показать, что программа работает. Я очень новичок в 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) { 


} 
} 

ответ

0

написать что-то, что настраивает массив строк и называет sort против него, затем распечатывает результаты или проверяет их на основании хорошего результата.

В идеале, написать то, что делает это неоднократно, с особым акцентом на проверку необычных комбинаций (уже отсортированы или сортируются в обратном порядке, нуль в массиве, то же значение, появляющийся в несколько раз или все значения могут быть одинаковыми ...)

Если вы хотите выйти за рамки этого, вам нужно вникнуть в код, чтобы понять его крайние случаи и, в частности, протестировать их и/или провести анализ «покрытия кода» (есть инструменты для этого), чтобы убедиться, что все части кода.

0

Предположим, что алгоритм сортировки корректен: 1. Если основной метод находится внутри тела quicksort_class, вы можете напрямую вызвать метод сортировки как sort (arrayToBeSorted, 0, arrayToBeSorted.length-1). И массивToBeSorted должен заказать лексикографически после вашего звонка. Вы можете проверить это для подтверждения. 2. Если основной метод относится к другому классу в качестве основного метода в настоящее время, вам нужно как минимум изменить частный префикс метода сортировки на общедоступный и вызвать quicksort_class.sort (arrayToBeSorted, 0, arrayToBeSorted.length-1).

Некоторые советы: 1. Частный префикс определения метода означает, что этот метод можно вызывать только внутри тела текущего класса. 2. Статический префикс определения метода означает, что вы должны вызывать этот метод через имя класса напрямую, а не через экземпляр класса.

Кстати, вы можете указать, что означает атрибут array1? Я не понимаю, почему он там.

+0

Да, о дизайне тестовых примеров, вы можете обратиться к ответу keshlam @. Я забыл описать это здесь. – pengfeil

Смежные вопросы