zoukankan      html  css  js  c++  java
  • 基本排序算法总结

    1.冒泡排序(最大值置后

    var sortBubble = function (arr) {
    //如果数组<=1,则直接返回
    if (arr.length <= 1) {
    return arr;
    }
    for (var i = 0; i < arr.length; i++) {
    for (var j = 0; j < arr.length - i - 1; j++) {
    if (arr[j] > arr[j + 1]) {
    var temp = arr[j];
    arr[j] = arr[j + 1];
    arr[j + 1] = temp;
    }
    }
    }
    return arr;
    };

    2.快速排序(left/ right

    var quickSort = function (arr) {
    //如果数组<=1,则直接返回
    if (arr.length <= 1) {
    return arr;
    }
    var pivotIndex = Math.floor(arr.length / 2);
    //找基准,并把基准从原数组删除
    var pivot = arr.splice(pivotIndex, 1)[0];
    //定义左右数组
    var left = [], right = [];

    //比基准小的放在left,比基准大的放在right
    for (var i = 0; i < arr.length; i++) {
    if (arr[i] <= pivot) {
    left.push(arr[i]);
    }
    else {
    right.push(arr[i]);
    }
    }
    //递归
    return quickSort(left).concat([pivot], quickSort(right));
    }

    3.选择排序(最小值置前

    var selectionSort = function (arr) {
    if (arr.length <= 1) {
    return arr;
    }
    for (var i = 0; i < arr.length; i++) { //缩小选择的范围
    var min = arr[i]; //假定范围内第一个为最小值
    var index = i; //记录最小值的下标
    for (var j = i + 1; j < arr.length; j++) { //在范围内选取最小值
    if (arr[j] < min) {
    min = arr[j];
    index = j;
    }
    }
    if (index !== i) { //把范围内最小值交换到范围内第一个
    var temp = arr[i];
    arr[i] = arr[index];
    arr[index] = temp;
    }
    console.log(arr);
    console.log("---------------------");
    }
    return arr;
    }

    4.插入排序

    var insertionSort = function (arr) {
    if (arr.length <= 1) {
    return arr;
    }
    for (var i = 0; i < arr.length - 1; i++) {
    //i代表已经排序好的序列最后一项下标
    var insert = arr[i+1];
    var index = i + 1;//记录要被插入的下标
    for (var j = i; j >= 0; j--) {
    if (insert < arr[j]) {
    //要插入的项比它小,往后移动
    arr[j+1] = arr[j];
    index = j;
    }
    }
    arr[index] = insert;
    console.log(arr);
    console.log("-----------------------");
    }
    return arr;
    }

    
    



  • 相关阅读:
    【iCore3 双核心板_ uC/OS-III】例程三:任务的挂起与恢复
    病例讨论-----鼻窦炎一例(联想的风)
    桂枝二越婢一治疗鼻窦炎(联想的风)
    半夏厚朴汤治疗双肺支气管炎(联想的风)
    茯苓饮治疗呕吐(联想的风)
    半夏泻心汤治疗腹泻一例(联想的风)
    己椒苈黄汤治水肿案(联想的风)
    苓甘五味姜辛汤(联想的风病案)
    黃芩汤(联想的风病案)
    九味羌活汤的理解---王幸福
  • 原文地址:https://www.cnblogs.com/LP1204/p/8478772.html
Copyright © 2011-2022 走看看