summaryrefslogtreecommitdiff
path: root/test-chill/unit-tests/cprog/QuickSorter.cc
diff options
context:
space:
mode:
authorDerick Huth <derickhuth@gmail.com>2015-09-24 12:22:41 -0600
committerDerick Huth <derickhuth@gmail.com>2015-09-24 12:22:41 -0600
commit4631ad76927d433da5d55c3c373a1dfd0f74c9d4 (patch)
treef8dcba88576ec95e403f0c14efd80e970f30a260 /test-chill/unit-tests/cprog/QuickSorter.cc
parent6eb2b89896da66a77d0dcdf2d72b98c122826949 (diff)
parent0cff3f9a3c4ccd434900162ebef4bd814850f481 (diff)
downloadchill-4631ad76927d433da5d55c3c373a1dfd0f74c9d4.tar.gz
chill-4631ad76927d433da5d55c3c373a1dfd0f74c9d4.tar.bz2
chill-4631ad76927d433da5d55c3c373a1dfd0f74c9d4.zip
Merge pull request #7 from dhuth/master
V0.2.1
Diffstat (limited to 'test-chill/unit-tests/cprog/QuickSorter.cc')
-rw-r--r--test-chill/unit-tests/cprog/QuickSorter.cc83
1 files changed, 0 insertions, 83 deletions
diff --git a/test-chill/unit-tests/cprog/QuickSorter.cc b/test-chill/unit-tests/cprog/QuickSorter.cc
deleted file mode 100644
index 3ade346..0000000
--- a/test-chill/unit-tests/cprog/QuickSorter.cc
+++ /dev/null
@@ -1,83 +0,0 @@
-#include "QuickSorter.h"
-
-/* Python
-
-def swap(l, i, k):
- v = l[i]
- l[i] = l[k]
- l[k] = v
- print(str(l))
-
-def partition(l, start, end):
- print("PARTITION {} [{}:{}]".format(l, start, end))
- p_value = l[end]
- p_index = end-1
-
- for i in range(start, end):
- while(i < p_index and l[i] >= p_value):
- swap(l, i, p_index)
- p_index -= 1
- while(i >= p_index and l[i] < p_value):
- swap(l, i, p_index)
- p_index += 1
- swap(l, p_index, end)
- print("DONE {}|[{}]|{}:{}".format(l[start:p_index], l[p_index], l[p_index+1:end+1], p_value))
- return p_index
-
-def qsort(l, i, k):
- if i < k:
- p = partition(l, i, k)
- qsort(l,i,p-1)
- qsort(l,p+1,k)
-
-if __name__ == "__main__":
- import random as r
- x = [int(r.random()*12) for i in range(12)]
- print(x)
- qsort(x, 0, len(x)-1)
- print(x)
-
-*/
-
-static void swap(std::vector<int>& list, int i, int k) {
- int v = list[i];
- list[i] = list[k];
- list[k] = v;
-}
-
-static int partition(std::vector<int>& list, int i, int k) {
- int pivot_value = list[k];
- int pivot_index = k - 1;
-
- for(int index = i; index < k; index++) {
- while((index < pivot_index) && (list[index] >= pivot_value)) {
- swap(list, index, pivot_index);
- pivot_index--;
- }
- while((index >= pivot_index) && (list[index] < pivot_value)) {
- swap(list, index, pivot_index);
- pivot_index++;
- }
- }
- swap(list, pivot_index, k);
- return pivot_index;
-}
-
-static void quicksort(std::vector<int>& list, int i, int k) {
- if(i < k) {
- int p = partition(list, i, k);
- quicksort(list, i, p-1);
- quicksort(list, p+1, k);
- }
-}
-
-QuickSorter::QuickSorter() {
- this->name = std::string("quicksort");
-}
-
-QuickSorter::~QuickSorter() {
-}
-
-void QuickSorter::sort(std::vector<int>& list) const {
- quicksort(list, 0, list.size()-1);
-}