Files
004_comission/_resources/it114105/itp4510/Lab04/Lab4.2/QuickVsBubble.java
louiscklaw 6c60a73f30 update,
2025-01-31 19:15:17 +08:00

81 lines
1.7 KiB
Java

public class QuickVsBubble {
public static void main(String [] args) {
int n = Integer.parseInt(args[0]);
int [] arrayQS = new int[n];
int [] arrayBS = new int[n];
for (int i=0; i<n; i++) {
int x = (int) (Math.random() * 10000);
arrayQS[i] = x;
arrayBS[i] = x;
}
long startTime, endTime;
startTime = System.nanoTime();
quicksort(arrayQS, 0, arrayQS.length-1);
endTime = System.nanoTime();
System.out.println("Quick Sort = " + (endTime-startTime));
startTime = System.nanoTime();
bubbleSort(arrayBS);
endTime = System.nanoTime();
System.out.println("Bubble Sort = " + (endTime-startTime));
}
public static void quicksort (int array[], int first, int last) {
int pivot;
if (first >= last)
return;
pivot = partition(array, first, last);
quicksort(array, first, pivot - 1); /* sort left side */
quicksort(array, pivot + 1, last); /* sort right side */
}
public static int partition(int array[], int left, int right){
int i = left;
while (true) {
while (array[i] <= array[right] && i != right)
--right;
if (i == right)
return i ;
if (array[i] > array[right]) {
swap(array, i, right);
i = right;
}
while (array[left] <= array[i] && left != i )
++left;
if (i == left)
return i;
if (array[left] > array[i]) {
swap(array, i, left);
i = left;
}
}
}
public static void swap(int [ ] arr, int x, int y) {
int temp=arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
public static void bubbleSort(int [] array) {
for (int pass=0; pass < array.length-1; pass++)
for (int i=0; i < array.length-pass-1; i++)
if (array [ i ] > array [ i+1 ])
swap(array, i, i+1);
}
}