js算法(1)
数组排序
arr.sort(function compare(a,b){return b.value-a.value});
json 排序
$.getJSON('URl',function(data){
var arr = [1,4,2,6,8,5,1,3,4];
var temp ;
for (var i = 0; i < arr.length-1; i++){
for (var j = 0; j < arr.length-i-1 ; j++){
if (arr[j] > arr[j + 1]){
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
console.log(arr);
var arr = [1,4,2,6,8,5,1,3,4];
for(var i=0;i<arr.length-1;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
var temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
console.log(arr);
var arr=[1,4,2,6,8,5,1,3,4];
var temp;
for(var i=0;i<arr.length-1;i++){
for(var j=arr.length-1;j>i;j--){
if(arr[j]<arr[i]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
console.log(arr);
3、快速排序
function quickSort(arr){
var len=arr.length;//获取arr的长度
if(len<=1){//如果arr的长度小于等于1则直接返回arr
return arr;
}
var pIndex=Math.floor(len/2);//获取基准点
7 var pivot=arr.splice(pIndex,1);//用splice方法获取基准点pivot=[arr[pIndex]],此时的arr为去除第pIndex项之后的剩余项;
var left=[];
var right=[];
for(var i=0; i<arr.length; i++){
if(arr[i]<pivot[0]){//如果小于基准点就放到数组l中
12 left.push(arr[i]);
}else{//如果大于等于基准点就放到右边数组中
right.push(arr[i]);
}
}
return quickSort(left).concat(pivot,quickSort(right));//递归不断重复整个过程
}
4、插入排序
function insertSort(arr){
var temp=null;//定义一个临时变量保存要插入元素的值
for(var i=1; i<arr.length; i++){//从索引位置1开始遍历数组
if(arr[i]<arr[i-1]){//只有要插入的元素小于已排好序的最大元素的时候才需要进行下面的操作
temp=arr[i];//把要插入的元素赋给一个临时变量
var p=i-1;//已排好序的数组的最后一项索引为i-1
while(temp<arr[p] && p>=0){//如果要插入的元素小于已排好序的元素并且没有到已排好数组的开始位置
arr[p+1]=arr[p];//把大于要插入元素(temp)的已排好序元素位置往后挪一位
p--;//从后往前便利已经排好序的元素
}
arr[p+1]=temp;//把要插入的元素插入到已排好序的数组中,索引位置为p+1
}
}
return arr;//返回已排好序的数组
}
#3快速排序es6改写
let quickSort = (arr) => {
if(arr.length <= ){
return arr;
}
let sortIndex = Math.floor(arr.length/),
leftArr = [],
rightArr = [],
base = arr[sortIndex];
arr.splice(sortIndex,);
//此处需要去除参照项,否则会出现Maximum call stack size exceeded 递归调用超出限制
//简单写法 base = arr.splice(sortIndex,1)[0]
for(let i = ;i < arr.length;i++){
if(arr[i] < base){
leftArr.push(arr[i])
}else{
rightArr.push(arr[i])
}
}
return quickSort(leftArr).concat(base,quickSort(rightArr))
}
let testArr = [,,,,,,,]
let result = quickSort(testArr);
js算法(1)的更多相关文章
- js算法集合(一) 水仙花数 及拓展(自幂数的判断)
js算法集合(一) ★ 最近有些朋友跟我说对js中的一些算法感到很迷惑,知道这个算法到底是怎么回事,但是就是不会用代码把它写出来,这里我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法, ...
- js算法集合(二) javascript实现斐波那契数列 (兔子数列)
js算法集合(二) 斐波那契数列 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列进行研究,来加深对循环的理解. Javascript实 ...
- js算法初窥03(简单搜索及去重算法)
前面我们了解了一些常用的排序算法,那么这篇文章我们来看看搜索算法的一些简单实现,我们先来介绍一个我们在实际工作中一定用到过的搜索算法--顺序搜索. 1.顺序搜索 其实顺序搜索十分简单,我们还是以第一篇 ...
- JS算法练习四
JS算法练习 1.将使用空格分隔单词使用驼峰命名连接起来: var str="HELLO world welcome to my hometown"; /*--先输入一个有空格分隔 ...
- JS算法练习三
JS算法练习 1.生成一个长度为10的随机数组,使用冒泡法给数组排序 var arr=new Array(10); for (var i = 0; i <arr.length ; i++) { ...
- JS算法练习二
JS算法练习 1.生成4位的随机验证码,可取大小写字母和数字 ? var validateCode = "", /*--存放生成好的验证码字符串--*/ count = 0; /* ...
- JS算法练习一
JS算法练习 1.随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么? ①.数组添加元素的方式得到位数(数组长度)与值(数组元素) ①.数组添加元素的方式得到位数(数组长度)与值(数组元 ...
- js算法初窥05(算法模式02-动态规划与贪心算法)
在前面的文章中(js算法初窥02(排序算法02-归并.快速以及堆排)我们学习了如何用分治法来实现归并排序,那么动态规划跟分治法有点类似,但是分治法是把问题分解成互相独立的子问题,最后组合它们的结果,而 ...
- js算法初窥03(搜索及去重算法)
前面我们了解了一些常用的排序算法,那么这篇文章我们来看看搜索算法的一些简单实现,我们先来介绍一个我们在实际工作中一定用到过的搜索算法——顺序搜索. 1.顺序搜索 其实顺序搜索十分简单,我们还是以第一篇 ...
- js算法之寻路
A*寻路算法 算法流程说明: 说明:起始节点记作S,目标节点记作E,对于任意节点P,从S到当前节点P的总移动消耗记作GP,节点P到目标E的曼哈顿距离记作HP,从节点P到相邻节点N的移动消耗记作DPN, ...
随机推荐
- bzoj1624 寻宝之路
Description 农夫约翰正驾驶一条小艇在牛勒比海上航行. 海上有N(1≤N≤100)个岛屿,用1到N编号.约翰从1号小岛出发,最后到达N号小岛.一张藏宝图上说,如果他的路程上经 ...
- [Java]ITOO初步了解 标签: javajbosstomcat 2016-05-29 21:14 3367人阅读 评论(34)
开始接触Java的ITOO了,这两天在搭环境,结果发现,哇,好多没接触过的东西,先写篇博客来熟悉一下这些工具. JBoss 基于Tomcat内核,青胜于蓝 Tomcat 服务器是一个免费的开放 ...
- 破解fireworks_cs6、phoneshop_cs6、dreamweaver_cs6
我的Adobe密码是绿尘枫加**0,首字母大写,在我的百度云盘有这三款软件的补丁,这三款软件安装和破解的方式都一样.先下载正常安装好正版软件>正常试用一遍之后,fireworks的补丁装错了文件 ...
- MySQL 获取当前月的天数
select curdate(); --获取当前日期 select DATE_ADD(curdate(),interval -day(curdate())+ ...
- hdu 3938 Portal (prim+离线)
Problem - 3938 题意是要求出给定权值下,满足要求的点对的数目.所谓的要求是,给出两点,之间会有很多路径,这个点对的最小距离是众多路径中,最短的一条路径的长度,路径长度是路径上最长边的长度 ...
- @hdu - 6427@ Problem B. Beads
目录 @description@ @solution@ @accepted code@ @details@ @description@ 有 m 种不同颜色的珠子,颜色分别为 1~m,每一种颜色的珠子有 ...
- @codechef - SERSUM@ Series Sum
目录 @description@ @solution@ @part - 1@ @part - 2@ @part - 3@ @accepted code@ @details@ @description@ ...
- oracle总是使用索引的第一个列
如果索引是建立在多个列上, 只有在它的第一个列(leading column)被where子句引用时,优化器才会选择使用该索引. 译者按: 这也是一条简单而重要的规则. 见以下实例. SQL> ...
- 添加SuperSocket的启动代码到 Windows Azure 的 WorkRole 项目
与其它SuperSocket程序相同,启动代码同样也要写到程序的入口处,如 Windows Azure 的 WorkRole 项目的OnStart() 方法: public override bool ...
- 在字符串中查找id值MySQL
PHPmyadmin中sql语句 SELECT * FROM `hz_article_type` WHERE FIND_IN_SET( 5, items_id ) LIMIT 0 , 30 结果: S ...