- 插入排序
时间复杂度为O(n^2)
<script>
Array.prototype.insert=function insert(){
let _this=this,
handle=[];
handle.push(_this[0]);
for(let i=1;i<_this.length;i++){
let A=_this[i];
for(let j=handle.length-1;j>=0;j--){
let B=handle[j];
if(A>B){
handle.splice(j+1,0,A);
break;
}
if(j==0){
handle.unshift(A);
}
}
}
return handle;
}
let arr=[12,8,24,16,1];
arr=arr.insert();
console.log(arr);
</script>
- 快速排序(二分法)
时间复杂度为O(log2(n))
<script>
Array.prototype.quick=function quick(){
let _this=this;
if(_this.length<=1){
return _this;
}
let middleIndex=Math.floor(_this.length/2),
middleValue=_this.splice(middleIndex,1)[0];
let arrLeft=[],
arrRight=[];
for(let i=0;i<_this.length;i++){
let item=_this[i];
item<middleValue?arrLeft.push(item):arrRight.push(item);
}
return quick.call(arrLeft).concat(middleValue,quick.call(arrRight));
}
let arr=[12,8,24,16,1];
arr=arr.quick();
console.log(arr);
</script>