数组排序【冒泡+查找+快速排序】

来源:互联网 发布:苹果手机铃声软件 编辑:程序博客网 时间:2024/05/16 10:52
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title></head><body><script>/*将一堆数进行排序如 3,4,2,9,8排 2,3,4,8,9*/// 冒泡排序/*① 9 8 4 3   8 4 9 3   8 4 3 9② 8 4 3 9   4 3 8 9③ 4 3 8 9   3 4 8 9*/function show(arr){    var len = arr.length;    var temp = 0;    for ( var i = 0; i < len; i++ ) {        for ( var j = 0; j < len - i; j++ ) {            if ( arr[j] > arr[j+1] ) {                temp = arr[j+1];                arr[j+1] = arr[j];                arr[j] = temp;            }        }    }    return arr;}// 选择排序/*① 9 8 4 3   4 9 8 3   3 9 8 4② 3 9 8 4   3 8 9 4   3 4 9 8③ 3 4 9 8=> 3 4 8 9*//*function show(arr){    var len = arr.length;    var temp = 0;    for ( var i = 0; i < len; i++ ) {        for ( var j = i + 1; j < len; j++ ) {            if(arr[i]>arr[j]){                temp = arr[j];                arr[j] = arr[i];                arr[i] = temp;            }            console.log(arr);        }    }    return arr;}*/// 快速排序/*① 9,8,4,3,1   3 1 4 9 8   1 3 4 8 9 */function show(arr){    // 如果数组小于1个或者为空,则返回该数组    if ( arr.length <= 1 ) return arr;    // 取到中间索引    var middleIndex = Math.floor( arr.length / 2 );    // 原数组剔除中间值,且取出中间值    var middleValue = arr.splice( middleIndex, 1 )[0];    // 比中间值小的放在左边,大的放在右边    var leftArr = [];    var rightArr = [];    for ( var i = 0; i < arr.length; i++ ) {        var curValue = arr[i];        curValue <= middleValue ? leftArr.push( curValue )             : rightArr.push( curValue );    }    // 递归,返回值带上中间值    return arguments.callee(leftArr).concat([middleValue], arguments.callee(rightArr));}           alert(show([9,8,4,3,1]));</script></body></html>
0 0