您的位置:首页 > 产品设计 > UI/UE

quicksort

2012-02-09 22:07 176 查看
function
partition(array, left, right, pivotIndex)
pivotValue := array[pivotIndex]
swap array[pivotIndex] and array[right]  // Move pivot to end

storeIndex := left
for
i  from 
left to
right - 1 // left ≤ i < right

if
array[i] < pivotValue
swap array[i] and array[storeIndex]
storeIndex := storeIndex + 1
swap array[storeIndex] and array[right]  // Move pivot to its final place

return
storeIndex

function
quicksort(array, left, right)
if
right > left  // subarray of 0 or 1 elements already sorted

select a pivotIndex in the range left ≤ pivotIndex ≤ right  // see Choice of pivot for possible choices

pivotNewIndex := partition(array, left, right, pivotIndex)  // element at pivotNewIndex is now at its final position

quicksort(array, left, pivotNewIndex - 1)  // recursively sort elements on the left of pivotNewIndex

quicksort(array, pivotNewIndex + 1, right)  // recursively sort elements on the right of pivotNewIndex
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: