From 8e8f22dda66b63ee58a25f1052cd197779f164dc Mon Sep 17 00:00:00 2001
From: anastas <anastas@221aa14e-8319-0410-a670-987f0aec2ac5>
Date: Fri, 11 Aug 2006 10:27:46 +0000
Subject: Added support for concatenated codes

git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@3234 221aa14e-8319-0410-a670-987f0aec2ac5
---
 gr-trellis/src/lib/quicksort_index.cc | 37 +++++++++++++++++++++++++++++++----
 1 file changed, 33 insertions(+), 4 deletions(-)

(limited to 'gr-trellis/src/lib/quicksort_index.cc')

diff --git a/gr-trellis/src/lib/quicksort_index.cc b/gr-trellis/src/lib/quicksort_index.cc
index 705aeebed5..0ab63ebbe6 100644
--- a/gr-trellis/src/lib/quicksort_index.cc
+++ b/gr-trellis/src/lib/quicksort_index.cc
@@ -29,14 +29,14 @@ a=b;
 b=temp;
 }
 
+
 template <class T> void quicksort_index(std::vector<T> & p, std::vector<int> & index, int left, int right)
 {
-T pivot;
 
 if (left < right) {
     int i = left;
     int j = right + 1;
-    pivot = p[left];
+    T pivot = p[left];
     do {
         do 
             i++;
@@ -51,7 +51,36 @@ if (left < right) {
     } while (i < j);
     SWAP <T> (p[left], p[j]);
     SWAP <int> (index[left], index[j]);
-    quicksort_index(p,index, left, j-1);
-    quicksort_index(p,index, j+1, right);
+    quicksort_index <T> (p,index, left, j-1);
+    quicksort_index <T> (p,index, j+1, right);
+}
+}
+
+
+
+void quicksort_index1(std::vector<int> & p, std::vector<int> & index, int left, int right)
+{
+
+if (left < right) {
+    int i = left;
+    int j = right + 1;
+    int pivot = p[left];
+    do {
+        do
+            i++;
+        while ((p[i] < pivot) && (i < right));
+        do
+            j--;
+        while ((p[j] > pivot) && (j > left));
+        if (i < j) {
+            SWAP <int> (p[i],p[j]);
+            SWAP <int> (index[i],index[j]);
+        }
+    } while (i < j);
+    SWAP <int> (p[left], p[j]);
+    SWAP <int> (index[left], index[j]);
+    quicksort_index1 (p,index, left, j-1);
+    quicksort_index1 (p,index, j+1, right);
 }
 }
+
-- 
cgit v1.2.3