## 冒泡排序冒泡排序,。```/** * 冒泡排序: * 思想:当前项和后一样进行比较,如果当前项大于后一项,两者交换位置 * 平均的时间复杂度为:O( n^2 ) */var originArr = [199, 34, 29, 432, 123, 20, 10, 9, 8]function sort (array, type) { //type 0: 升序 1:降序 不传默认是升序 //使用双循环去遍历数组,第一个循环取 array 的一个数据,第二个循环拿上个循环数据的后面一个数据,两个数据进行比较。 for (var i = 0; i < array.length; i++) { for (var j = i + 1; j < array.length; j++) { if (array[i] > array[j]) { //如果 array[i] >arr[j]) { [min, arr[j]] = [arr[j], min]//交换两个元素的位置 } } arr[i] = min } return arr}getArr(originArr)```## 简单选择排序```/** * 简单选择排序 * 思想:从一组元素中,选出最小的放在第一个位置,然后再从剩下的元素中,选出最小的,放在第二个位置上。 * * 时间复杂度:O(n^2) * */var originArr = [12, 43, 23, 542, 214, 5, 3, 32, 23]function getArr (arr) { var arrLength = arr.length; for (let i = 0; i < arrLength - 1; i++) { let num = i for (var j = i + 1; j < arrLength; j++) { if (arr[i] > arr[j]) {//寻找最小值 num = j//保存最小值的索引 } } if (num != i) { let temp = arr[i]; arr[i] = arr[num]; arr[num] = temp; } } return arr}getArr(originArr)result:[3, 23, 12, 43, 32, 5, 23, 214, 542]```### 希尔排序```var originArr = [12, 43, 23, 542, 214, 5, 3, 32, 23]function getArr (arr) { var len = arr.length, temp, footLang = 1; while (footLang < len / 3) { footLang = footLang * 3 + 1; } for (footLang; footLang > 0; footLang = Math.floor(footLang / 3)) { for (var i = footLang; i < len; i++) { temp = arr[i]; for (var j = i - footLang; j >= 0 && arr[j] > temp; j -= footLang) { arr[j + footLang] = arr[j]; } arr[j + footLang] = temp; } } return arr;}getArr(originArr)```发现一篇好文章,推荐文章:http://louiszhai.github.io/2016/12/23/sort/#%E5%B8%8C%E5%B0%94%E6%8E%92%E5%BA%8F复制代码