zoukankan      html  css  js  c++  java
  • js常见排序

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <script>
    //冒泡排序
    //两两比较交换位置。
    function sortBubble(arr){
    for(i=0;i<arr.length-1;i++){
    for(j=0;j<arr.length-1-i;j++){
    if(arr[j]>arr[j+1]){
    var temp=arr[j];
    arr[j]=arr[j+1];
    arr[j+1]=temp;
    }
    }
    }
    return arr;
    }
    //快速排序
    // (1)在数据集之中,选择一个元素作为"基准"(pivot)。
    // (2)所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。
    // (3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
    function quickSort(arr) {
    var len = arr.length, a0 = arr[0], left = [], right = [];
    if (arr.length <= 1) { return arr;}
    for (var i = 1; i < len; i++) {
    if (arr[i] < a0) {
    left.push(arr[i])
    } else {
    right.push(arr[i])
    }
    }
    return arguments.callee(left).concat([a0], arguments.callee(right));
    }
    //插入排序
    // 1.首先将数组第1个数看成是一个有序序列。
    // 2.将数组的第2个数按照关键字大小插入到这个有序序列中,插入后得到了一包含两个数的有序序列。
    // 3.接下来再重复上面的步骤将第3,第4……第n-1个数分别插入到该有序序列中,最终得到一个包含n个数的有序序列。
    function insertSort(arr){
    var len =arr.length,temp, i,j;
    for(i=1;i<len;i++ ){
    temp = arr[i];
    j = i-1;
    while(j>=0 && arr[j]>temp){
    arr[j+1] = arr[j];
    j--;
    }
    arr[j+1] = temp;
    }
    return arr;
    }
    //选择排序
    //1.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,
    //2.然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
    //3.以此类推,直到所有元素均排序完毕。
    function selectSort(arr){
    var len = arr.length, i, j,temp;
    for(i=0;i<len-1;i++){
    temp = arr[i];
    for(j = i+1;j<len-1;j++){
    if(temp>arr[j]){
    var min = temp;
    temp = arr[j];
    arr[j] = min;
    }
    }
    arr[i] = temp
    }
    return arr;
    }
    var arr = [1,2,4,5,3,2,3];
    console.log(sortBubble(arr));
    console.log(quickSort(arr));
    console.log(insertSort(arr));
    console.log(selectSort(arr))
    </script>
    </body>
    </html>
  • 相关阅读:
    “Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED”
    【问底】夏俊:深入站点服务端技术(一)——站点并发的问题
    java反射调用方法
    linux 文件操作系统调用
    64位win7中使用vs2013为python3.4安装pycrypto-2.6.1插件报Unable to find vcvarsall.bat异常解决方式
    ViewPager+RadioGroup实现标题栏切换,Fragment切换
    Android View系统解析(下)
    高速学会Mac上托管代码到github(具体解释)
    linux程序设计——多线程(第十二章)
    使用工作流更新子记录
  • 原文地址:https://www.cnblogs.com/tutao1995/p/8547753.html
Copyright © 2011-2022 走看看