From 1d862d57bc2679d3b1b7bef40cb75b8ea444277a Mon Sep 17 00:00:00 2001 From: "navid.sassan" Date: Mon, 14 Dec 2020 15:15:31 +0100 Subject: [PATCH] solved s12 ex1 --- .../java/ch/zhaw/ads/QuickerSortServer.java | 71 +++++++++++++++++++ .../ch/zhaw/ads/QuickerSortServerTest.java | 19 +++++ 2 files changed, 90 insertions(+) create mode 100644 12/src/main/java/ch/zhaw/ads/QuickerSortServer.java create mode 100644 12/src/test/java/ch/zhaw/ads/QuickerSortServerTest.java diff --git a/12/src/main/java/ch/zhaw/ads/QuickerSortServer.java b/12/src/main/java/ch/zhaw/ads/QuickerSortServer.java new file mode 100644 index 0000000..b9ba2ef --- /dev/null +++ b/12/src/main/java/ch/zhaw/ads/QuickerSortServer.java @@ -0,0 +1,71 @@ +package ch.zhaw.ads; + +import java.util.Random; + +public class QuickerSortServer implements CommandExecutor { + + @Override + public String execute(String command) { + int[] testdata = new int[1000]; + Random random = new Random(); + for (int i=0; i < testdata.length; i++) { + testdata[i] = random.nextInt(1000000); + } + quickSort(testdata); + return "Is sorted: " + checkSorted(testdata); + } + + private void quickSort(int[] a, int left, int right) { + if (left < right) { + int mid = partition (a, left, right); + if (mid <= 50) { + insertSort(a); + } else { + quickSort(a, left, mid-1); + quickSort(a, mid , right); + } + } + } + + private void quickSort(int[] a){ + quickSort(a, 0, a.length-1); + } + + private static int partition (int[] a, int left, int right) { + int pivot = a[(left + right) / 2]; + while (left <= right) { + while (a[left] < pivot) { + left++; + } + while (a[right] > pivot) { + right--; + } + if (left <= right) { + int temp = a[left]; + a[left] = a[right]; + a[right] = temp; + left++; + right--; + } + } + return left; + } + + private boolean checkSorted(int[] a) { + for (int i=1; i < a.length; i++) { + if (a[i-1] > a[i]) return false; + } + return true; + } + + private void insertSort(int[] a) { + for (int k = 1; k < a.length; k++) + if (a[k] < a[k-1]){ + int x = a[k]; + int i; + for (i = k; ((i > 0) && (a[i-1] > x));i--) + a[i] = a[i-1]; + a[i] = x; + } + } +} diff --git a/12/src/test/java/ch/zhaw/ads/QuickerSortServerTest.java b/12/src/test/java/ch/zhaw/ads/QuickerSortServerTest.java new file mode 100644 index 0000000..f0e1f08 --- /dev/null +++ b/12/src/test/java/ch/zhaw/ads/QuickerSortServerTest.java @@ -0,0 +1,19 @@ +package ch.zhaw.ads; + +import org.junit.Test; +import org.junit.Before; +import static org.junit.Assert.*; +import java.util.*; +import java.io.*; + +public class QuickerSortServerTest { + + QuickerSortServer serverToTest; + + @Test + public void test1() { + serverToTest = new QuickerSortServer(); + System.out.println(serverToTest.execute("")); + } +} +