前端排序算法
来源:互联网 发布:中序遍历递归算法 编辑:程序博客网 时间:2024/05/16 16:00
冒泡排序
依次比较相邻的两个元素,如果后一个小于前一个,则交换,这样从头到尾一次,就将最大的放到了末尾。
从头到尾再来一次,由于每进行一轮,最后的都已经是最大的了,因此后一轮需要比较次数可以比上一次少一个。虽然你还是可以让他从头到尾来比较,但是后面的比较是没有意义的无用功,为了效率,你应该对代码进行优化。
图片演示如下:
代码实现:
function bubbleSort(arr) {
var len = arr.length;
for (var i = 0; i< len - 1; i++) {
for (var j = 0; j < len - 1 - i; j++){
if (arr[j]> arr[j+1]) { // 相邻元素两两对比
var temp = arr[j+1]; // 元素交换
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
选择排序
选择排序我觉得是最简单的了,大一学VB的时候,就只记住了这个排序方法,原理非常简单:每次都找一个最大或者最小的排在开始即可。
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕。
动图演示:
代码演示:
function selectionSort(arr) {
var len = arr.length;
var minIndex, temp;
for (var i = 0; i< len - 1; i++) {
minIndex = i;
for (var j = i + 1; j < len; j++) {
if (arr[j]< arr[minIndex]) { // 寻找最小的数
minIndex = j; // 将最小数的索引保存
}
}
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}
插入排序
插入排序也比较简单。就像打扑克一样,依次将拿到的元素插入到正确的位置即可。
1.将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
2.从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
动图演示:
代码示例:
function insertionSort(arr) {
var len = arr.length;
var preIndex, current;
for (var i = 1; i< len; i++) {
preIndex = i - 1;
current = arr[i];
while(preIndex >= 0&& arr[preIndex] > current){
arr[preIndex+1] = arr[preIndex];
preIndex--;
}
arr[preIndex+1] = current;
}
return arr;
}
- 前端排序算法总结
- 前端 排序算法总结
- 前端排序算法
- 前端面试之排序算法
- 前端常见排序算法之冒泡算法
- 前端面试必备——基本排序算法
- 前端算法之简单排序(JS版)
- 前端算法之快速排序(JS版)
- 基于JavaScript的前端常用排序算法实现(1)
- js前端排序
- 前端复习--归并排序
- javascript 表格前端排序
- 一个数组变换的算法问题-关于前端的分页功能排序(点击/热门)功能
- 前端js也能写算法
- 前端算法面试题
- 前端常见算法
- 前端常见算法
- 前端面试算法篇
- freeSSHD + PuTTY 公共密钥登录
- MongoDB 安全 checklist 及最优配置模板
- docker基础知识
- Android 返回键不销毁程序,只退出
- linux下分区大小调整
- 前端排序算法
- Windows7 安装TensorFlow
- 最新最全的Android版本更新,Tinker热修复
- interface
- Centos VM虚拟机挂载磁盘分区
- LINUX系统性学习
- 手动创建一个git
- poj2352
- 蓝桥杯练习 未名湖的烦恼