solved Lab
This commit is contained in:
parent
fad7dd65cd
commit
7c4ad84102
|
@ -26,14 +26,65 @@ public class ParallelQuickerSortServer extends Thread implements CommandExecutor
|
||||||
|
|
||||||
if (left < right) {
|
if (left < right) {
|
||||||
// TODO Aufgabe 12.3
|
// TODO Aufgabe 12.3
|
||||||
|
mid = partition(arr, left, right);
|
||||||
|
if(mid - left > SPLIT_THRESHOLD) {
|
||||||
|
t1 = new ParallelQuickerSortServer(arr, left, mid - 1);
|
||||||
|
t1.start();
|
||||||
|
} else {
|
||||||
|
quickerSort(arr, left, mid - 1);
|
||||||
|
}
|
||||||
|
if(right - mid > SPLIT_THRESHOLD) {
|
||||||
|
t2 = new ParallelQuickerSortServer(arr, mid, right);
|
||||||
|
t2.start();
|
||||||
|
} else {
|
||||||
|
quickerSort(arr, mid, right);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(t1 != null) {
|
||||||
|
try {
|
||||||
|
t1.join();
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(t2 != null) {
|
||||||
|
try {
|
||||||
|
t2.join();
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void quickerSort(int[] arr, int left, int right) {
|
private void quickerSort(int[] arr, int left, int right) {
|
||||||
|
if(arr.length <= 50) {
|
||||||
|
insertionSort(arr, left, right);
|
||||||
|
} else {
|
||||||
|
if(left < right) {
|
||||||
|
int mid = partition(arr, left, right);
|
||||||
|
quickerSort(arr, left, mid - 1);
|
||||||
|
quickerSort(arr, mid, right);
|
||||||
|
}
|
||||||
|
}
|
||||||
// TODO Aus Aufgabe 12.1 übernehmen
|
// TODO Aus Aufgabe 12.1 übernehmen
|
||||||
}
|
}
|
||||||
|
|
||||||
private int partition(int[] arr, int left, int right) {
|
private int partition(int[] arr, int left, int right) {
|
||||||
|
int pivot = arr[(left + right) / 2];
|
||||||
|
while(left <= right) {
|
||||||
|
while(arr[left] < pivot) {
|
||||||
|
left++;
|
||||||
|
}
|
||||||
|
while(arr[right] > pivot) {
|
||||||
|
right--;
|
||||||
|
}
|
||||||
|
if(left <= right) {
|
||||||
|
swap(arr, left, right);
|
||||||
|
left++;
|
||||||
|
right--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return left;
|
||||||
// TODO Aus Aufgabe 12.1 übernehmen
|
// TODO Aus Aufgabe 12.1 übernehmen
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,11 +75,35 @@ public class SortServer implements CommandExecutor {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void quickerSort(int[] arr, int left, int right) {
|
private void quickerSort(int[] arr, int left, int right) {
|
||||||
// To do Aufgabe 12.1
|
if(arr.length <= 50) {
|
||||||
|
insertionSort(arr);
|
||||||
|
} else {
|
||||||
|
if(left < right) {
|
||||||
|
int mid = partition(arr, left, right);
|
||||||
|
quickerSort(arr, left, mid - 1);
|
||||||
|
quickerSort(arr, mid, right);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Todo Aufgabe 12.1
|
||||||
}
|
}
|
||||||
|
|
||||||
private int partition (int[] arr, int left, int right) {
|
private int partition (int[] arr, int left, int right) {
|
||||||
// To do Aufgabe 12.1
|
int pivot = arr[(left + right) / 2];
|
||||||
|
while(left <= right) {
|
||||||
|
while(arr[left] < pivot) {
|
||||||
|
left++;
|
||||||
|
}
|
||||||
|
while(arr[right] > pivot) {
|
||||||
|
right--;
|
||||||
|
}
|
||||||
|
if(left <= right) {
|
||||||
|
swap(arr, left, right);
|
||||||
|
left++;
|
||||||
|
right--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return left;
|
||||||
|
// Todo Aufgabe 12.1
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isSorted(int[] a) {
|
private boolean isSorted(int[] a) {
|
||||||
|
|
Loading…
Reference in New Issue