快速排序主要分三部分:1、選出一個基準(pivot) 2、所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的后面(相同的數可以到任一邊)。在這個分區退出之后,該基準就處于數列的中間位置。這個稱為分區(partition)操作;3、遞歸地(recursive)把小于基準值元素的子數列和大于基準值元素的子數列排序;遞歸的最底部情形,是數列的大小是零或一,也就是永遠都已經被排序好了。雖然一直遞歸下去,但是這個算法總會退出,因為在每次的迭代(iteration)中,它至少會把一個元素擺到它最后的位置去。
function quickSort(arr) { if (arr.length <= 1) { return arr } console.log("原數組是:" + arr) var pivotIndex = Math.floor(arr.length / 2) var pivot = arr.splice(pivotIndex, 1)[0] var left = [] var right = [] console.log("將中介提取出來后數組是:" + arr) for (var i = 0 ; i < arr.length ; i++){ console.log("此刻中介是:" + pivot + "當前元素是:" + arr[i]) if (arr[i] < pivot) { left.push(arr[i]) console.log("移動" + arr[i] + "到左邊") } else { right.push(arr[i]) console.log("移動" + arr[i] + "到右邊") } } return quickSort(left).concat([pivot], quickSort(right)) } var nums = [2,3,4,3,1,5,7,122,341,-1] console.log(quickSort(nums))
第二種方法:
function quickSort(arr) { if (arr.length <= 1) { return arr } console.log("原數組是:" + arr) var pivotIndex = Math.floor(arr.length / 2) var pivot = arr.splice(pivotIndex, 1)[0] var left = [] var right = [] console.log("將中介提取出來后數組是:" + arr) for (var i = 0 ; i < arr.length ; i++){ console.log("此刻中介是:" + pivot + "當前元素是:" + arr[i]) if (arr[i] < pivot) { left.push(arr[i]) console.log("移動" + arr[i] + "到左邊") } else { right.push(arr[i]) console.log("移動" + arr[i] + "到右邊") } } return quickSort(left).concat([pivot], quickSort(right)) } var nums = [2,3,4,3,1,5,7,122,341,-1] console.log(quickSort(nums))
相關推薦:
Javascript實現快速排序分析
PHP實現快速排序的方法示例
php實現二維數組快速排序算法的示例
以上就是Js快速排序方法實例的詳細內容,更多請關注php中文網其它相關文章!