js 排序算法(持续更新中)
冒泡排序
//原理:每次都是前后两两比较然后根据大小交换位置(可以从小到大,或者相反) //1.prepare swap fn function swap(array,index1,index2) { var aux = array[index1]; array[index1] = array[index2]; array[index2] = aux; } //2.double for function bubbleSort(arr){ let length = arr.length for (let i=0;i<length;i++){ for (let j=0;j<length-1;j++){ if (arr[j] > arr[j+1]){ swap(arr,j,j+1) } } console.log(arr) //过程 } console.log('result',arr) //结果 } let test = [1,5,4,3,2] bubbleSort(test)
控制台运行实例:
选择排序
function swap(array,index1,index2) { var aux = array[index1]; array[index1] = array[index2]; array[index2] = aux; } //selectionSort //原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置, //然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 //以此类推,直到所有元素均排序完毕。 function selectionSort(arr) { let len = arr.length; for (let i = 0; i < len - 1; i++) { let minIndex = i; //假设arr中最小值得index为minIndex for (let j = i + 1; j < len; j++) { if (arr[j] < arr[minIndex]) { // 寻找最小的数 minIndex = j; // 将最小数的索引保存 } } swap(arr,minIndex,i) //将实际最小值index(为i)赋值给minIndex,即获得当前一轮排序后的新arr console.log(arr) //过程 } console.log('result',arr) //结果 return arr; } let test = [5,4,1,3,2] selectionSort(test)
控制台实例:
相关推荐
randy0 2020-11-17
lixiaotao 2020-10-07
美丽的泡沫 2020-09-08
nongfusanquan0 2020-08-18
hang0 2020-08-16
earthhouge 2020-08-15
算法改变人生 2020-07-28
troysps 2020-07-19
Broadview 2020-07-19
chenfei0 2020-07-18
风吹夏天 2020-07-07
yangjingdong00 2020-07-05
数据与算法之美 2020-07-05
shawsun 2020-07-04
数据与算法之美 2020-07-04
要知道时间复杂度只是描述一个增长趋势,复杂度为O的排序算法执行时间不一定比复杂度为O长,因为在计算O时省略了系数、常数、低阶。实际上,在对小规模数据进行排序时,n2的值实际比 knlogn+c还要小。
Evankaka 2020-07-04
田有朋 2020-06-28