作为经典的排序算法之一,冒泡排序在JavaScript中也有多种实现方式。
冒泡排序算法流程图?在一些最常见的实现中会声明临时变量,在另一些不必声明临时变量的实现中则可能只支持数值数组或字符串数组(二者之一)。
下面介绍两种【无须声明临时变量】,【对数值数组和字符串数组都适用】的实现方式。
编写函数实现冒泡排序算法?
ES5版:
var arr = [5, 25, 2, 53, 22, 10];function bubbleSort(arr) {for (var j = 1, len = arr.length; j < len; j++){for (var i = 0; i < len - j; i++) {if (arr[i] > arr[i + 1]) {arr[i + 1] = [arr[i], arr[i] = arr[i + 1]][0]; // 执行顺序}}}return arr; }console.log(bubbleSort(arr).toString()); // ‘2,5,10,22,25,53’
要点:在arr[i + 1]被重新赋值之前,arr[i]已经被重新赋值;而在arr[i]被重新赋值之前,其原值已经被保存在数组的0索引位置。
ES6版:
let arr = ['Root', 'Harold', 'Sameen', 'John'];const bubbleSort = (arr) => {for (let j = 1, len = arr.length; j < len; j++){for (let i = 0; i < len - j; i++) {if (arr[i] > arr[i + 1]) {[arr[i], arr[i + 1]] = [arr[i + 1], arr[i]]; // 解构}}}return arr; }console.log(bubbleSort(arr).toString()); // 'Harold,John,Root,Sameen'
要点:理解 ECMAScript 6 新增的解构赋值表达式。
the end