Реализация базового алгоритма с использованием последнего массива в качестве опорного элемента в Java. Нормально ли, что сортировка массива случайных чисел из 100 000 000 элементов занимает 5 часов?
Характеристики моей системы:
Mac OS X Lion 10.7.2 (2011 г.)
Intel Core i5 2,3 ГГц
8 ГБ оперативной памяти
Update2: Думаю, я делаю что-то не так в других методах, поскольку Нарендра смог запустить быструю сортировку. Вот полный код, который я пытаюсь запустить.
import java.util.Random;
public class QuickSort {
public static int comparisons = 0;
public static void main(String[] args) {
int size = 100000000;
int[] smallSampleArray = createArrayOfSize(size);
System.out.println("Starting QS1...");
long startTime = System.currentTimeMillis();
quickSort(smallSampleArray,0,size-1);
System.out.println( "Finished QS1 in " + (System.currentTimeMillis() - startTime)+ " seconds");
System.out.println("Number of comparisons for QS1: " + comparisons);
}
public static int[] createArrayOfSize(int arraySize) {
int[] anArray = new int[arraySize];
Random random = new Random();
for(int x=0; x < anArray.length; x++ ) {
anArray[x] = random.nextInt(1000) + 1;;
}
return anArray;
}
public static void quickSort( int anArray[], int position, int pivot) {
if( position < pivot ) {
int q = partition(anArray, position, pivot);
quickSort(anArray, position, q-1);
quickSort(anArray, q+1, pivot);
}
}
public static int partition(int anArray[], int position, int pivot ) {
int x = anArray[pivot];
int i = position - 1;
for(int j = position; j < (pivot-1); j++ ) {
comparisons++;
if(anArray[j]
Подробнее здесь: https://stackoverflow.com/questions/793 ... ment-array