summaryrefslogtreecommitdiff
path: root/datastructures
diff options
context:
space:
mode:
authorPaul Jungeblut <paul.jungeblut@gmail.com>2016-10-06 00:14:07 +0200
committerPaul Jungeblut <paul.jungeblut@gmail.com>2016-10-06 00:14:07 +0200
commit7c97303ec8fc5dfc278198687d8c5154e0cd1baf (patch)
tree4ad42ac9f3cafeef0aa7b324b2bc8c62f29fd76c /datastructures
parentb585d932530f755e80829bfc5d28d97b5afe1e15 (diff)
Adjusting datastructures chapter to new layout.
Diffstat (limited to 'datastructures')
-rw-r--r--datastructures/RMQ.cpp5
-rw-r--r--datastructures/segmentTree.cpp3
-rw-r--r--datastructures/stlTree.cpp6
-rw-r--r--datastructures/unionFind.cpp5
4 files changed, 11 insertions, 8 deletions
diff --git a/datastructures/RMQ.cpp b/datastructures/RMQ.cpp
index 8e6a33f..0eed967 100644
--- a/datastructures/RMQ.cpp
+++ b/datastructures/RMQ.cpp
@@ -1,5 +1,5 @@
vector<int> data(RMQ_SIZE);
-vector<vector<int>> rmq(floor(log2(RMQ_SIZE)) + 1, vector<int>(RMQ_SIZE));
+vector<vector<int>> rmq(floor(log2(RMQ_SIZE))+1, vector<int>(RMQ_SIZE));
// Baut Struktur auf. O(n*log(n))
void initRMQ() {
@@ -8,7 +8,8 @@ void initRMQ() {
if(i == 0) rmq[0][l] = l;
else {
int r = l + ss;
- rmq[i][l] = (data[rmq[i-1][l]] <= data[rmq[i-1][r]] ? rmq[i-1][l] : rmq[i-1][r]);
+ rmq[i][l] = (data[rmq[i-1][l]] <= data[rmq[i-1][r]]) ?
+ rmq[i-1][l] : rmq[i-1][r];
}}}}
// Gibt den Index des Minimums im Intervall [l,r) zurück. O(1).
diff --git a/datastructures/segmentTree.cpp b/datastructures/segmentTree.cpp
index cb303d1..c67cd8b 100644
--- a/datastructures/segmentTree.cpp
+++ b/datastructures/segmentTree.cpp
@@ -6,7 +6,7 @@ int query(int x, int y, int k = 0, int X = 0, int Y = MAX_N - 1) {
if (x <= X && Y <= y) return m[k];
if (y < X || Y < x) return -1000000000; // Ein "neutrales" Element.
int M = (X + Y) / 2;
- return max(query(x, y, 2 * k + 1, X, M), query(x, y, 2 * k + 2, M + 1, Y));
+ return max(query(x, y, 2*k+1, X, M), query(x, y, 2*k+2, M+1, Y));
}
void update(int i, int v, int k = 0, int X = 0, int Y = MAX_N - 1) {
@@ -18,7 +18,6 @@ void update(int i, int v, int k = 0, int X = 0, int Y = MAX_N - 1) {
m[k] = max(m[2 * k + 1], m[2 * k + 2]);
}
-// Einmal vor allen anderen Operationen aufrufen.
void init(int k = 0, int X = 0, int Y = MAX_N - 1) {
if (X == Y) { m[k] = a[X]; return; }
int M = (X + Y) / 2;
diff --git a/datastructures/stlTree.cpp b/datastructures/stlTree.cpp
index a20b0dc..6dde73a 100644
--- a/datastructures/stlTree.cpp
+++ b/datastructures/stlTree.cpp
@@ -2,11 +2,13 @@
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std; using namespace __gnu_pbds;
-typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> Tree;
+typedef tree<int, null_type, less<int>, rb_tree_tag,
+ tree_order_statistics_node_update> Tree;
+
int main() {
Tree X;
for (int i = 1; i <= 16; i <<= 1) X.insert(i); // {1, 2, 4, 8, 16}
cout << *X.find_by_order(3) << endl; // => 8
- cout << X.order_of_key(10) << endl; // => 4 = Nachfolger von 10 = minimales i, sodass X[i] >= 10
+ cout << X.order_of_key(10) << endl; // => 4 = min i, mit X[i] >= 10
return 0;
}
diff --git a/datastructures/unionFind.cpp b/datastructures/unionFind.cpp
index 3f7df97..98758aa 100644
--- a/datastructures/unionFind.cpp
+++ b/datastructures/unionFind.cpp
@@ -1,6 +1,7 @@
// Laufzeit: O(n*alpha(n))
-// "height" ist obere Schranke für die Höhe der Bäume. Sobald Pfadkompression
-// angewendet wurde, ist die genaue Höhe nicht mehr effizient berechenbar.
+// "height" ist obere Schranke für die Höhe der Bäume. Sobald
+// Pfadkompression angewendet wurde, ist die genaue Höhe nicht mehr
+// effizient berechenbar.
vector<int> parent // Initialisiere mit Index im Array.
vector<int> height; // Initialisiere mit 0.