从给定的数据中,随机抽出一项,这项的左边放所有比它小的,右边放比它大的,然后再分别这两边执行上述操作,采用的是递归的思想,总结出来就是 实现一层,分别给两边递归,设置好出口
function fastSort(array,head,tail){//考虑到给每个分区操作的时候都是在原有的数组中进行操作的,所以这里head,tail来确定分片的位置
/*生成随机项*/
var randomnum = Math.floor(ranDom(head,tail))
var random = array[randomnum]
/*将小于random的项放置在其左边 策略就是通过一个临时的数组来储存分好区的结果,再到原数组中替换*/
var arrayTemp = []
var unshiftHead = 0
for(var i = headi <= taili++){
if(array[i]<random){
arrayTemp.unshift(array[i])
unshiftHead++
}else if(array[i]>random){
arrayTemp.push(array[i])
}
/*当它等于的时候放哪,这里我想选择放到队列的前面,也就是从unshift后的第一个位置放置*/
if(array[i]===random){
arrayTemp.splice(unshiftHead,0,array[i])
}
}
/*将对应项覆盖原来的记录*/
for(var j = head , u=0j <= tailj++,u++){
array.splice(j,1,arrayTemp[u])
}
/*寻找中间项所在的index*/
var nowIndex = array.indexOf(random)
/*设置出口,当要放进去的片段只有2项的时候就可以收工了*/
if(arrayTemp.length <= 2){
return
}
/*递归,同时应用其左右两个区域*/
fastSort(array,head,nowIndex)
fastSort(array,nowIndex+1,tail)
}
JavaScript实现多维数组、对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序。
sort() 方法用于对数组的元素进行排序。语法如下:
arrayObject.sort(sortby)例如:
function NumAscSort(a,b)
{
return a - b
}
function NumDescSort(a,b)
{
return b - a
}
var arr = new Array( 3600, 5010, 10100, 801)
arr.sort(NumDescSort)
alert(arr)
arr.sort(NumAscSort)
alert(arr)
var arr = ["4_jpg","2_jpg","3_jpg" ,"1_jpg","6_jpg", "5_jpg"]arr.sort(function(a,b){
return a.localeCompare(b)
})
console.log(arr)
首先定义一个数组
const arr = [1,2,3,4,5,6]
第一种:for循环
for (let i = 0i<arr.lengthi++){
console.log(arr[i])
}
for(j=0,len=arr.lengthj<lenj++){}//这种方法基本上是所有循环遍历方法中性能最高的一种
第二种 for of (需要ES6支持) 性能要好于forin,但仍然比不上普通for循环
for (let value of arr){
console.log(value)
}
第三种 for in 它的效率是最低的
for (let i in arr){
console.log(arr[i])
}
第四种 foreach() 实际上性能比普通for循环弱
1、箭头函数写法
arr.forEach(value =>{
console.log(value)
})
2、普通函数写法
arr.forEach(function(value){
console.log(value)
})
第五种 entries()
for (let [index, value] of arr.entries()) {
console.log(value)
}
第六种 keys()
for (let inx of arr.keys()){
console.log(arr[inx])
}
第七种 reduce()
1、箭头函数
arr.reduce((pre,cur)=>{
console.log(cur)
})
2、普通函数
arr.reduce(function(pre,cur){
console.log(cur)
})
第八种 map() 但实际效率还比不上foreach
1、箭头函数
arr.map(value=>{
console.log(value)
})
2、普通函数
arr.map(function(value){
console.log(value)
})
第九种 values()
for (let value of arr.values()){
console.log(value)
}