1.使用双for循环
var a [1,3,5]
var b = [2,4,6,7]
var c = a.concat(b)
var temp
for(let i =0;i<c.length;i++){
for(let j =0;j<c.length-1;j++){
if(c[j]>c[j+1]){
temp = c[j]
c[j]=c[j+1]
c[j+1] = temp
}
}
}
console.log(c)
2.直接使用sort方法
var a = [1,3,5]
var b = [2,4,6,7]
var c = a.concat(b)
c.sort((i,j) => {
return i-j
})
console.log(c)
3.使用递归实现快速排序
var a = [1,3,5]
var b = [2,4,6,7]
var c = a.concat(b)
function sortArr(arr){
if(arr.length<2){
return arr
}
var centerIndex = Math.floor(arr.length/2)
var centerNum = arr.splice(centerIndex,1)
var left = []
var right = []
for(let i = 0;i<arr.length;i++){
if(arr[i]<centerNum){
left.push(arr[i])
}else{
right.push(arr[i])
}
}
return sortArr(left).concat(centerNum,sortArr(right))
}
console.log(sortArr(c))
4.有一点限制的一个方法
let sortArr = (arr1, arr2) => {
let i = 0,
j = 0
let newArr = []
while (i < arr1.length && j < arr2.length) {
if (arr1[i] < arr2[j]) {
newArr.includes(arr1[i]) ? '' : newArr.push(arr1[i])
i++
} else if (arr1[i] > arr2[j]) {
newArr.includes(arr2[j]) ? '' : newArr.push(arr2[j])
j++
} else if (arr1[i] === arr2[j]) {
newArr.includes(arr1[i]) ? '' : newArr.push(arr1[i])
i++, j++
}
}
// 将指针未移到末尾的部分取出,拼到新数组后面
if (i < arr1.length) {
return newArr.concat(arr1.splice(i))
} else if (j < arr2.length) {
return newArr.concat(arr2.splice(j))
} else {
return newArr
}
}
console.log(sortArr([2, 5, 11], [4, 7, 9, 10]))
该方法有限制在于提供两个数组参数,必须是排序好的数组,不然不生效。