美文网首页
2.选择排序(用js学算法)

2.选择排序(用js学算法)

作者: 简默丶XS | 来源:发表于2019-03-04 15:49 被阅读0次

数组:

  • 数组带来的问题: 额外请求的数组储存空间,请求的位数少不够用,请求的位数多如果用不到会浪费。

    数组
  • 速度方面:因为数组是依次排序的,我们想取得指定位置的数组元素,只需要通过简单的数学计算就行。例如:我们要获得a[5]上的元素,我们只需要取得a[0]位置+5即可。所以需要随机获取位置元素时,数组的效率很高 【随机访问】

链表

  • 链表:链表的每个元素都存储了下一个元素的地址,从而使一系列随机的内存地址串在一起。

    链表
  • 速度方面:链表因为无规则排序,当我们要获得a[5]元素时,我们要先获取a[0]得到a[1]地址,在通过a[1]获得a[2]地址,依次到a[5]。所以在获取所有元素时,链表的效率依然很高,但是如果需要跳跃获取(获取a[3]和a[9]),链表的效率就很低(因为要获取4,5,6,7,8)【顺序访问】

  • 另外,链表擅长删除和插入,只需要修改上个元素的内存地址指向

数组链表大O速度对比

选择排序(找最大的)

歌曲播放次数 依次找出最大的进行排序
  • 对一组数据中依次找到最大的进行排序
  • 实例:
    网上的
  var example = [1, 22, 32, 4, 555, 21, 11, 209, 33, 33]
  function selectSort(arr) {
    var len = arr.length;
    var minIndex, temp;
    console.time('选择排序耗时');
    debugger
    for (i = 0; i < len - 1; i++) {
      minIndex = i;
      for (j = i + 1; j < len; j++) {
        if (arr[j] < arr[minIndex]) {
          minIndex = j; //!!主要区别在这里:永远拿最大的数字去找另一个最大的数字!!
        }
      }
      temp = arr[i];
      arr[i] = arr[minIndex];
      arr[minIndex] = temp;
    }
    console.timeEnd('选择排序耗时');
    return arr;
  }
  console.log(selectSort(example));

我写的

  const array = [1, 22, 32, 4, 555, 21, 11, 209, 33, 33]
  const newarray = [];
  //找最大的
  function findmax(array) {
    for (const x in array) {
      let result = true;//定义变量跟踪比较结果
      for (const y in array) {
        if (array[x] < array[y]) {
          result = false
          break;
        }
      }
      if (result) {
        return x
      }
    }
  }
  //一共需要找数组个数的次数
  const length = array.length;
  for (let x = 0; x < length; x++) {
    const maxIndex = findmax(array)
    newarray.push(array[maxIndex])
    //找到放到第一个
    array.splice(maxIndex, 1)
  }

  console.log(newarray)

相关文章

  • 2.选择排序(用js学算法)

    数组: 数组带来的问题: 额外请求的数组储存空间,请求的位数少不够用,请求的位数多如果用不到会浪费。数组 速度方面...

  • iOS常见算法

    升序算法:用冒泡排序法 选择排序法 快速排序

  • JAVA数据结构和算法——简单排序

    冒泡排序 选择排序 插入排序 排序算法的选择 除非手边没有算法书可参考,一般情况几乎不太用冒泡排序。选择排序虽然把...

  • 11.18-11.24周复盘

    一、技术 1.算法学习(冒泡排序、选择排序、插入排序、希尔排序、归并排序),待学:堆排序、桶排序 2.搭建第一个s...

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

  • 【排序算法】2.选择排序

    选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大...

  • js算法排序-选择排序

  • 数组的排序算法的实现

    数组的排序算法 关于排序算法请看这篇文章。本文尝试使用js来实现一部分简单的算法。 选择排序 思路:若要从小到大排...

  • 关于JavaScript-2:基本排序算法

    基本排序算法 1.冒泡排序 示例代码: 2.插入法排序 示例代码: 3.选择排序 示例代码: 以上三种排序算法个人...

  • js算法——选择排序

    在一个数组里找到最小的数字,排在第一位,找到第二小的数字,排在第二位,依次类推...

网友评论

      本文标题:2.选择排序(用js学算法)

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