Я пишу метод быстрой сортировки Java. мой код в настоящее время выглядит следующим образом
public class Quicksort {
public static void main(String[ ] args)
{
final String BLANKS = " "; // A String of two blanks
int i; // Array index
int[ ] data = { 1000, 80, 10, 50, 70, 60, 90, 20, 30, 40, 0, -1000 };
// Print the array before sorting:
System.out.println("Here is the entire original array:");
for (i = 0; i < data.length; i++)
System.out.print(data[i] + BLANKS);
System.out.println( );
// Sort the numbers, and print the result with two blanks after each number.
quicksort(data, 1, data.length-2);
System.out.println("I have sorted all but the first and last numbers.");
System.out.println("The numbers are now:");
for (i = 0; i < data.length; i++)
System.out.print(data[i] + BLANKS);
System.out.println( );
}
Метод быстрой сортировки
public static void quicksort(int[ ] data, int first, int n)
{
int pivotIndex; // Array index for the pivot element
int n1; // Number of elements before the pivot element
int n2; // Number of elements after the pivot element
if (n > 1)
{
// Partition the array, and set the pivot index.
pivotIndex = partition(data, first, n);
// Compute the sizes of the two pieces.
n1 = pivotIndex - first;
n2 = n - n1 - 1;
// Recursive calls will now sort the two pieces.
quicksort(data, first, n1);
quicksort(data, pivotIndex + 1, n2);
}
}
Метод разбиения
private static int partition(int[ ] data, int first, int n){
int low = first;
int high = n;
int pivot = data[low];
while(low < high){
low ++;
while(low <= high && data[low] < pivot){
low ++;
}
while(high >= low && data[high] > pivot){
high--;
}
if(low<=n && low < high){
int temp = data[low];
data[low] = data[high];
data[high] = temp;
}
}
return low;
}//end partition
}//end class
Когда я в данный момент запускаю программу, я получаю результат
1000 80 0 10 70 60 90 20 30 40 50 -1000
После нескольких различных попыток и переписывания метода разбиения я все еще не могу заставить массив сортироваться должным образом. Задача состоит в том, чтобы отсортировать весь массив, кроме первого и последнего чисел.