summaryrefslogtreecommitdiff
path: root/sortlib.h
diff options
context:
space:
mode:
Diffstat (limited to 'sortlib.h')
-rw-r--r--sortlib.h26
1 files changed, 14 insertions, 12 deletions
diff --git a/sortlib.h b/sortlib.h
index c00c07f..8e5a763 100644
--- a/sortlib.h
+++ b/sortlib.h
@@ -3,7 +3,7 @@
#include <cstddef>
#include <cstdio>
-template <typename C> class CustomSort {
+template <typename> class CustomSort {
public:
CustomSort(size_t length, int move_offset)
: LENGTH(length), MOVE_OFFSET(move_offset) {}
@@ -45,11 +45,12 @@ public:
}
// son = get_son_from_step(son, (*last_known_point > val));
- auto tmp = (int)((*last_known_point - val) >> MOVE_OFFSET);
- printf("%llu %llu ", val, *last_known_point);
+ auto tmp = ((*last_known_point - val) >> MOVE_OFFSET);
+ // printf("%llu %llu ", val, *last_known_point);
son = son * 2 + tmp;
- puts(tmp == 0 ? "1:left" : "1:right");
- // if (son < 0) son = 0;
+ // printf("%d\n", son);
+ // puts(tmp == 0 ? "1:left" : "1:right");
+ // if (son < 0) son = 0;
/*printf("%d %d %d\n", (1 << (i + 1)), son,
-(int)((*last_known_point - val) >> MOVE_OFFSET));*/
last_known_point = next_level_start + son;
@@ -65,16 +66,17 @@ public:
if (val == mid_val) {
return begin + mid;
}
- printf("%llu %llu ", val, mid_val);
- puts(val > mid_val ? "right" : "left");
- /*begin += (int)((mid_val - val) >> MOVE_OFFSET) & (mid + 1);
- end -= (int)(~((mid_val - val) >> MOVE_OFFSET)) & (mid + 1);*/
- if (val > mid_val) {
+ last_known_point = begin;
+ // printf("%llu %llu ", val, mid_val);
+ // puts(val > mid_val ? "right" : "left");
+ // printf("%llu\n", ((val - mid_val) >> MOVE_OFFSET) * (mid + 1));
+ begin += ((mid_val - val) >> MOVE_OFFSET) * (mid + 1);
+ end -= (((val - mid_val) >> MOVE_OFFSET)) * (mid + 1);
+ /*if (val > mid_val) {
begin = begin + mid + 1;
} else {
end = end - mid - 1;
- }
- last_known_point = begin;
+ }*/
}
return last_known_point;
}