本文簡介 點贊 + 收藏 + 關註 = 學會了 這次會使用css畫出一個格子背景。並且一步步分析如何實現~ 思路 直接給答案:通過2個相等的直角三角形拼接,形成一個正方形。 三角形可以使用 background-image 的漸變來實現。 html, body { margin: 0; width: ...
快速排序演算法通過多次比較和交換來實現排序,其排序流程如下:
(1) 首先設定一個分界值,通過該分界值將數組分成左右兩部分。
(2) 將大於或等於分界值的數據集中到數組右邊,小於分界值的數據集中到數組的左邊。此時,左邊部分中各元素都 小於分界值,而右邊部分中各元素都大於或等於分界值。
(3) 然後,左邊和右邊的數據可以獨立排序。對於左側的數組數據,又可以取一個分界值,將該部分數據分成左右兩部分,同樣在左邊放置較小值,右邊放置較大值。右側的數組數據也可以做類似處理。
(4) 重覆上述過程,可以看出,這是一個遞歸定義。通過遞歸將左側部分排好序後,再遞歸排好右側部分的順序。當左、右兩個部分各數據排序完成後,整個數組的排序也就完成了。
var arr = [9, 4, 3, 1, 6, 3, 8, 7]
/**
* 快速排序
* @param {array} - arr 需要排序的數組
* @returns {array}
*/
function quickSort (arr) {
if (arr.length <= 1) return arr
var arr1 = [], arr2 = []
for (var i = 1; i < arr.length; i++) {
if (arr[i] < arr[0]) {
arr1.push(arr[i])
} else {
arr2.push(arr[i])
}
}
arr1 = quickSort(arr1)
arr2 = quickSort(arr2)
arr1.push(arr[0])
return arr1.concat(arr2)
}
console.log(quickSort(arr)) // [1, 3, 3, 4, 6, 7, 8, 9]
微信交流群
前端面試:劍指 Offer (3群)