冒泡排序:
每次对比相邻两个数据的大小,升序小的拍前面,若前一个数比后一个数大,则交换两数位置。需要两次for
循环遍历.
优点:简单
缺点:时间复杂度高,运行效率低下
function sortArr(arr){
var temp;
for(var i=0;i<arr.length-1;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i] > arr[j]){
times++;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
console.log("第"+(++times)+"次排序后:"+arr);
}
}
return arr;
}
var times = 0;
sortArr([2,5,4,1,7,3,8,6,9,0]);
out :[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
快速排序:
先找到一个基准点(一般数组中部),数组即被分为两部分,依次与基准点数据比较,比它小的,放左边,比它大的放右边,左右分别用一个空数组去存储比较后的数据,最后执行上述操作,知道数组长度<=1;
优点:快速常用
缺点:需要额外申明两个数组,浪费了内存空间资源
var times = 0;
var quickSort = function(arr){
if(arr.length<=1){//递归结束条件
return arr;
}
var midIndex = Math.floor(arr.length/2);//找基准点
var midIndexVal = arr.splice(midIndex,1);//取基准点的值
var left = [];
var right = [];
for(var i=0;i<arr.length;i++){
if(arr[i]<midIndexVal){
left.push(arr[i]);
}
else{
right.push(arr[i]);
}
console.log("第"+(++times)+"次排序后:"+arr);
}
return quickSort(left).concat(midIndexVal,quickSort(right));//递归执行
}
quickSort([2,5,4,1,7,3,8,6,9,0]);
out:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。