目录
JS排序之简单排序 冒泡排序
function bubbleSort(ary) { let exchange = 0, temp = null, n = ary.length; // i<n-1 而不是 i, for(let i=0; i=i; j--) { if(ary[j+1] < ary[j]) { temp = ary[j]; ary[j] = ary[j+1]; ary[j+1] = temp; exchange = 1; } } // 如果没有发生交换(表明排序完成),直接退出排序 if(exchange) break; } return ary; }
效果示例:
直接插入排序
function straightInsertionSort(ary) { let n = ary.length, temp = null; for (let i = 1; i < n; i++) { // 如果后一项小于前一项,说明需要交换 if (ary[i] < ary[i - 1]) { // temp = 需要交换的项 temp = ary[i]; let j = i - 1; do { // 前面的向后面移动 ary[j + 1] = ary[j]; j--; } while (j >= 0 && temp < ary[j]); // 找到temp需要插入的位置 // 插入temp ary[j + 1] = temp; } } return ary; }
效果显示:
直接选择排序
function straightSelectSort(ary) { let n = ary.length, temp = null; for(let i=0; i<n-1; i++) { let k = i; for(let j = i+1; j<n; j++) { // 找到最小值的位置 if(ary[j]<ary[k]) k=j; } if(k!== i) { temp = ary[i]; ary[i] = ary[k]; ary[k] = temp; } } return ary; }
效果示例:
gif来源: 排序算法-散点可视化
Copyright © 2004-2024 Ynicp.com 版权所有 法律顾问:建纬(昆明)律师事务所 昆明市网翼通科技有限公司 滇ICP备08002592号-4