mirror of
https://github.com/sharkdp/bat.git
synced 2025-09-01 10:52:24 +01:00
Add AWK file for syntax tests
This commit is contained in:
35
tests/syntax-tests/source/AWK/quicksort.awk
Normal file
35
tests/syntax-tests/source/AWK/quicksort.awk
Normal file
@@ -0,0 +1,35 @@
|
||||
# quicksort.awk --- Quicksort algorithm, with user-supplied
|
||||
# comparison function
|
||||
#
|
||||
# Arnold Robbins, arnold@skeeve.com, Public Domain
|
||||
# January 2009
|
||||
|
||||
|
||||
# quicksort --- C.A.R. Hoare's quicksort algorithm. See Wikipedia
|
||||
# or almost any algorithms or computer science text.
|
||||
#
|
||||
# Adapted from K&R-II, page 110
|
||||
|
||||
function quicksort(data, left, right, less_than, i, last)
|
||||
{
|
||||
if (left >= right) # do nothing if array contains fewer
|
||||
return # than two elements
|
||||
|
||||
quicksort_swap(data, left, int((left + right) / 2))
|
||||
last = left
|
||||
for (i = left + 1; i <= right; i++)
|
||||
if (@less_than(data[i], data[left]))
|
||||
quicksort_swap(data, ++last, i)
|
||||
quicksort_swap(data, left, last)
|
||||
quicksort(data, left, last - 1, less_than)
|
||||
quicksort(data, last + 1, right, less_than)
|
||||
}
|
||||
|
||||
# quicksort_swap --- helper function for quicksort, should really be inline
|
||||
|
||||
function quicksort_swap(data, i, j, temp)
|
||||
{
|
||||
temp = data[i]
|
||||
data[i] = data[j]
|
||||
data[j] = temp
|
||||
}
|
Reference in New Issue
Block a user