diff options
| author | gingerBill <bill@gingerbill.org> | 2021-07-03 14:37:55 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2021-07-03 14:37:55 +0100 |
| commit | 212d294b849979629db6952d7366d8c0b4129c7f (patch) | |
| tree | be67b901e8562a727e8d12bf0e17fd3153484c42 /core/sort | |
| parent | d6125f05d46c9de897b8ba2c4075714cef04e4f4 (diff) | |
Deprecate `sort.slice` and `sort.reverse_slice`
Diffstat (limited to 'core/sort')
| -rw-r--r-- | core/sort/sort.odin | 63 |
1 files changed, 9 insertions, 54 deletions
diff --git a/core/sort/sort.odin b/core/sort/sort.odin index 23a6ef8b3..84dd538cb 100644 --- a/core/sort/sort.odin +++ b/core/sort/sort.odin @@ -1,6 +1,7 @@ package sort import "core:mem" +import _slice "core:slice" import "intrinsics" _ :: intrinsics; @@ -29,9 +30,11 @@ sort :: proc(it: Interface) { } +@(deprecated="use slice.sort") slice :: proc(array: $T/[]$E) where ORD(E) { - s := array; - sort(slice_interface(&s)); + _slice.sort(array); + // s := array; + // sort(slice_interface(&s)); } slice_interface :: proc(s: ^$T/[]$E) -> Interface where ORD(E) { @@ -76,7 +79,10 @@ reverse_sort :: proc(it: Interface) { sort(reverse_interface(&it)); } +@(deprecated="use slice.reverse") reverse_slice :: proc(array: $T/[]$E) where ORD(E) { + _slice.reverse(array); + /* s := array; sort(Interface{ collection = rawptr(&s), @@ -93,6 +99,7 @@ reverse_slice :: proc(array: $T/[]$E) where ORD(E) { s[i], s[j] = s[j], s[i]; }, }); + */ } @@ -678,55 +685,3 @@ compare_strings :: proc(a, b: string) -> int { y := transmute(mem.Raw_String)b; return mem.compare_byte_ptrs(x.data, y.data, min(x.len, y.len)); } - - -@(deprecated="use slice.binary_search") -binary_search :: proc(array: $A/[]$T, key: T) -> (index: int, found: bool) - where intrinsics.type_is_ordered(T) #no_bounds_check { - - n := len(array); - switch n { - case 0: - return -1, false; - case 1: - if array[0] == key { - return 0, true; - } - return -1, false; - } - - lo, hi := 0, n-1; - - for array[hi] != array[lo] && key >= array[lo] && key <= array[hi] { - when intrinsics.type_is_ordered_numeric(T) { - // NOTE(bill): This is technically interpolation search - m := lo + int((key - array[lo]) * T(hi - lo) / (array[hi] - array[lo])); - } else { - m := (lo + hi)/2; - } - switch { - case array[m] < key: - lo = m + 1; - case key < array[m]: - hi = m - 1; - case: - return m, true; - } - } - - if key == array[lo] { - return lo, true; - } - return -1, false; -} - -@(deprecated="use slice.linear_search") -linear_search :: proc(array: $A/[]$T, key: T) -> (index: int, found: bool) - where intrinsics.type_is_comparable(T) #no_bounds_check { - for x, i in array { - if x == key { - return i, true; - } - } - return -1, false; -} |