美文网首页
基本算法(必会)

基本算法(必会)

作者: 奋斗1216 | 来源:发表于2018-07-06 11:02 被阅读0次

冒泡排序

image
function bubbleSort(arr) {
    var len = arr.length;
    for (var i = 0; i < len - 1; i++) {
        for (var j = 0; j < len - 1 - i; j++) {
            if (arr[j] > arr[j+1]) {        // 相邻元素两两对比
                var temp = arr[j+1];        // 元素交换
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}

快速排序

image
function swap(items, firstIndex, secondIndex){
    var temp = items[firstIndex];
    items[firstIndex] = items[secondIndex];
    items[secondIndex] = temp;
}

function partition(items, left, right) {
    var pivot = items[Math.floor((right + left) / 2)],
        i = left,
        j = right;
    while (i <= j) {
        while (items[i] < pivot) {
            i++;
        }
        while (items[j] > pivot) {
            j--;
        }
        if (i <= j) {
            swap(items, i, j);
            i++;
            j--;
        }
    }
    return i;
}

function quickSort(items, left, right) {
    var index;
    if (items.length > 1) {
        index = partition(items, left, right);
        if (left < index - 1) {
            quickSort(items, left, index - 1);
        }
        if (index < right) {
            quickSort(items, index, right);
        }
    }
    return items;
}

var items = [3,8,7,2,9,4,10]
var result = quickSort(items, 0, items.length - 1);

插入排序

image
function insertionSort(arr) {
    var len = arr.length;
    var preIndex, current;
    for (var i = 1; i < len; i++) {
        preIndex = i - 1;
        current = arr[i];
        while(preIndex >= 0 && arr[preIndex] > current) {
            arr[preIndex+1] = arr[preIndex];
            preIndex--;
        }
        arr[preIndex+1] = current;
    }
    return arr;
}

选择排序

image
function selectionSort(arr) {
    var len = arr.length;
    var minIndex, temp;
    for (var i = 0; i < len - 1; i++) {
        minIndex = i;
        for (var j = i + 1; j < len; j++) {
            if (arr[j] < arr[minIndex]) {     // 寻找最小的数
                minIndex = j;                 // 将最小数的索引保存
            }
        }
        temp = arr[i];
        arr[i] = arr[minIndex];
        arr[minIndex] = temp;
    }
    return arr;
}

时间空间复杂度

  • 在冒泡排序,插入排序,选择排序,快速排序中,在最最坏情况下,快速排序的时间复杂为O(n2) ,插入排序O(n2),选择排序O(n2),冒泡排序O(n2)
image

相关文章

  • 基本算法(必会)

    冒泡排序 快速排序 插入排序 选择排序 时间空间复杂度 在冒泡排序,插入排序,选择排序,快速排序中,在最最坏情况下...

  • 面试必会算法

    冒泡排序(Bubble Sort) 核心思想: 相邻元素两两比较,大的往后放,第一次比较完毕后,最大值出现在最大索...

  • 决策树回归

    决策树回归 决策树 基本算法原理 核心思想:相似的输入必会产生相似的输出。例如预测某人薪资: 年龄:1-青年,2-...

  • iOS开发·必会的算法操作:字符串数组排序+模型对象数组排序

    iOS开发·必会的算法操作:字符串数组排序+模型对象数组排序

  • 必会的排序算法

    一、基本的排序算法 1、冒泡排序 基本思想: n个数一共要进行n-1趟排序,每一趟排序都是两两比较,小的数一路交换...

  • 必会算法:反转链表Ⅱ

    阅读本文前,请务必先阅读必会算法:反转链表Ⅰ[https://www.jianshu.com/p/b03fe832...

  • 必会算法:反转链表Ⅰ

    ##题目 给定一个链表head,要求反转这个链表 链表节点定义如下 ##解题思路 首先先考虑极端情况 第一种情况 ...

  • 基本算法

    冒泡算法 选择排序 插入排序 顺序查找 二分查找

  • 基本算法

    预热姿势: 什么是二叉查找树 (二叉排序树) 1.红黑树 规则: 插入删除节点时的方法: 2. B-树 (也叫B树...

  • 基本算法

    1.冒泡算法 2.选择算法 *上面这两个算法耗时基本相同. 插入算法 *耗时比上面两个小 快速排序 Start...

网友评论

      本文标题:基本算法(必会)

      本文链接:https://www.haomeiwen.com/subject/lqyvuftx.html