diff options
author | Indrajith K L | 2022-12-03 17:00:20 +0530 |
---|---|---|
committer | Indrajith K L | 2022-12-03 17:00:20 +0530 |
commit | f5c4671bfbad96bf346bd7e9a21fc4317b4959df (patch) | |
tree | 2764fc62da58f2ba8da7ed341643fc359873142f /v_windows/v/examples/quick_sort.v | |
download | cli-tools-windows-master.tar.gz cli-tools-windows-master.tar.bz2 cli-tools-windows-master.zip |
Diffstat (limited to 'v_windows/v/examples/quick_sort.v')
-rw-r--r-- | v_windows/v/examples/quick_sort.v | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/v_windows/v/examples/quick_sort.v b/v_windows/v/examples/quick_sort.v new file mode 100644 index 0000000..f890749 --- /dev/null +++ b/v_windows/v/examples/quick_sort.v @@ -0,0 +1,42 @@ +import rand + +const ( + gen_len = 1000 // how many random numbers to generate + gen_max = 10000 // max of the generated numbers +) + +fn main() { + mut arr := []int{} + for _ in 0 .. gen_len { + arr << rand.intn(gen_max) + } + println('length of random array is $arr.len') + println('before quick sort whether array is sorted: ${is_sorted<int>(arr)}') + quick_sort<int>(mut arr, 0, arr.len - 1) + println('after quick sort whether array is sorted: ${is_sorted<int>(arr)}') +} + +fn quick_sort<T>(mut arr []T, l int, r int) { + if l >= r { + return + } + mut sep := l // what is sep: [...all_value<arr[sep]...sep...all_value>=arr[sep]...] + for i in l + 1 .. r + 1 { + if arr[i] < arr[l] { + sep++ + arr[i], arr[sep] = arr[sep], arr[i] + } + } + arr[l], arr[sep] = arr[sep], arr[l] + quick_sort<T>(mut arr, l, sep - 1) + quick_sort<T>(mut arr, sep + 1, r) +} + +fn is_sorted<T>(arr []T) bool { + for i in 0 .. arr.len - 1 { + if arr[i] > arr[i + 1] { + return false + } + } + return true +} |