55 lines
1.2 KiB
Odin
55 lines
1.2 KiB
Odin
package main
|
|
|
|
import "core:fmt"
|
|
|
|
linear_search :: proc(arr: []int, len: int, needle: int) -> bool {
|
|
for index, val in arr {
|
|
if val == needle {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
partition :: proc(arr: ^[]int, lo: int, hi: int) -> int {
|
|
pivot_value := arr[hi]
|
|
current_index := lo - 1
|
|
|
|
for i := lo; i < hi; i +=1 {
|
|
if arr[i] <= pivot_value {
|
|
current_index += 1
|
|
tmp := arr[i]
|
|
arr[i] = arr[current_index]
|
|
arr[current_index] = tmp
|
|
}
|
|
}
|
|
|
|
current_index += 1
|
|
arr[hi] = arr[current_index]
|
|
arr[current_index] = pivot_value
|
|
|
|
return(current_index)
|
|
}
|
|
|
|
quick_sort :: proc(arr: ^[]int, lo: int, hi: int) {
|
|
if lo < hi {
|
|
current_pivot := partition(arr, lo, hi);
|
|
quick_sort(arr, lo, current_pivot - 1);
|
|
quick_sort(arr, current_pivot + 1, hi);
|
|
}
|
|
}
|
|
|
|
main :: proc() {
|
|
fmt.println("hello there here is a for loop")
|
|
|
|
values: []int = {1, 2, 3, 4, 5}
|
|
res: bool = linear_search(values, 5, 2)
|
|
fmt.println(res)
|
|
|
|
fmt.println("quicksort ----------------")
|
|
arr: []int = {0, 2, 5, 1, 6}
|
|
fmt.println(arr);
|
|
quick_sort(&arr, 0, 4);
|
|
fmt.println(arr);
|
|
}
|