aboutsummaryrefslogtreecommitdiff
path: root/src/sort.h
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-06-09 01:42:18 +0800
committerMistivia <i@mistivia.com>2025-06-09 01:42:52 +0800
commit12eeb35015aba138a4e543c28c2ecee58d532440 (patch)
tree11a7776977c661f5f5a7c013bed290ba96fa2c23 /src/sort.h
parent55f3a89f40a676fca7fb820037457c74cbdebb92 (diff)
pass by value in basic traits
Diffstat (limited to 'src/sort.h')
-rw-r--r--src/sort.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/sort.h b/src/sort.h
index 64a5b3e..9266093 100644
--- a/src/sort.h
+++ b/src/sort.h
@@ -13,9 +13,9 @@
void T##_qsort_swap(T* arr, int lhs, int rhs) { \
if (lhs == rhs) return; \
T buf; \
- memcpy(&buf, arr+lhs, sizeof(T)); \
- memcpy(arr+lhs, arr+rhs, sizeof(T)); \
- memcpy(arr+rhs, &buf, sizeof(T)); \
+ buf = arr[lhs]; \
+ arr[lhs] = arr[rhs]; \
+ arr[rhs] = buf; \
} \
void T##_qsort(T* arr, int n) { \
if (n <= 1) return; \
@@ -23,11 +23,11 @@
T##_qsort_swap(arr, 0, pivot); \
int lp = 1, rp = n-1; \
while (lp < rp) { \
- if (T##_cmp(arr+lp, arr) < 0) { \
+ if (T##_cmp(arr[lp], arr[0]) < 0) { \
lp++; \
continue; \
} \
- if (T##_cmp(arr+rp, arr) >= 0) { \
+ if (T##_cmp(arr[rp], arr[0]) >= 0) { \
rp--; \
continue; \
} \
@@ -35,7 +35,7 @@
lp++; \
rp--; \
} \
- if (T##_cmp(arr + rp, arr) > 0) rp--; \
+ if (T##_cmp(arr[rp], arr[0]) > 0) rp--; \
T##_qsort_swap(arr, 0, rp); \
T##_qsort(arr, rp); \
T##_qsort(arr+rp+1, n-rp-1); \