美文网首页
排序方法

排序方法

作者: _菩提本无树_ | 来源:发表于2020-10-13 16:32 被阅读0次

1.选择排序


选择排序
// 选择排序
    chosedSort () {
      var arr = [1, 4, 2, 434, 123, 5343, 12, 53, 123, 1, 3, 3, 45, 1, 2, 34, 5, 6, 8, 93, 123, 34, 435, 1, 2, 3, 332, 123, 12, 143, 2, 44, 312, 33423, 432]
      for (let index = 0; index < arr.length - 1; index++) {
        let num = arr[index]
        let tempIndex = index
        for (let subIndex = index + 1; subIndex < arr.length; subIndex++) {
          if (num > arr[subIndex]) {
            num = arr[subIndex]
            tempIndex = subIndex
          }
        }
        arr[tempIndex] = arr[index]
        arr[index] = num
      }
      console.log(arr)
    },

2.插入排序


插入排序
// 插入排序
    insertSort () {
      var arr = [56, 4, 2, 434, 123, 5343, 12, 53, 123, 1, 3, 3, 45, 1, 2, 34, 5, 6, 8, 93, 123, 34, 435, 1, 2, 3, 332, 123, 12, 143, 2, 44, 312, 33423, 432]
      for (let index = 1; index < arr.length; index++) {
        let num = arr[index]
        for (let subIndex = index - 1; subIndex >= 0; subIndex--) {
          if (num >= arr[subIndex]) {
            if (index !== subIndex + 1) {
              // 删除元素
              arr.splice(index, 1)
              // 插入元素
              arr.splice(subIndex + 1, 0, num)
            }
            break
          }
        }
      }
      console.log(arr)
    },

3.冒泡排序


冒泡排序
// 冒泡排序
    bubblingSort () {
      var arr = [1, 4, 2, 434, 123, 5343, 12, 53, 123, 1, 3, 3, 45, 1, 2, 34, 5, 6, 8, 93, 123, 34, 435, 1, 2, 3, 332, 123, 12, 143, 2, 44, 312, 432]
      for (let index = 1; index < arr.length; index++) {
        for (let subIndex = 0; subIndex < arr.length - index; subIndex++) {
          let subNum = arr[subIndex]
          if (subNum > arr[subIndex + 1]) {
            arr[subIndex] = arr[subIndex + 1]
            arr[subIndex + 1] = subNum
          }
        }
      }
      console.log(arr)
    },
  1. 归并排序


    归并排序

    5.快速排序


    快速排序
// 快速排序,使用递归
    quickSort (arr, left, right) {
    //   console.log(arr)
    //   console.log(left + '/' + right)
      // 定义i和j的原因是下面需要使用这两个值确定下一个分组的递归左右边界
      let i = left
      let j = right
      // 不能使用0,因为arr永远是完整的数组,但是left是一直变的
      let key = arr[i]
      // 排序结束
      if (left >= right) {
        return
      }
      while (i < j) {
        // 当i<j,关键值小于从后面数的出现比key值小的数之前一直自减
        while (i < j && arr[j] >= key) {
          j--
        }
        // 这个时候key值是最小的,证明结束了
        if (i === j) {
          break
        }
        // 这里需要了解一下i++和++i是不一样滴
        arr[i++] = arr[j]
        while (i < j && arr[i] <= key) {
          i++
        }
        // 这个时候key值是最大的,证明结束了
        if (i === j) {
          break
        }
        // 这里需要了解一下j--和--j是不一样滴
        arr[j--] = arr[i]
      }
      arr[i] = key
      this.quickSort(arr, left, j - 1)
      this.quickSort(arr, j + 1, right)
    },

相关文章

  • 数组排序方法

    数组排序方法介绍 (注意:排序后返回值是不可变数组类型) //排序方法1 (块排序) //排序方法2. //排序...

  • js数组排序方式(待更新)

    方法一:冒泡排序 方法二:sort()方法排序 sort()方法默认按unicode编码顺序进行排序,因此需要传入...

  • 实现几种常见排序方法

    Java实现几种常见排序方法 日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还...

  • 冒泡排序、插入排序、选择排序

    一、排序方法与复杂度归类 几种最经典、最常用的排序方法:冒泡排序、插入排序、选择排序、快速排序、归并排序、计数排序...

  • NSSet和排序方法、数组去重

    NSSet 去掉数组中重复的数NSSet方法 NSDictionary方法 数组排序 冒泡排序 sort方法排序(快排)

  • 排序(上)

    排序方法与复杂度归类 (1)几种最经典、最常用的排序方法:冒泡排序、插入排序、选择排序、快速排序、归并排序、计数排...

  • 数组排序 冒泡排序 选择排序 插入排序 快速排序

    冒泡排序 选择排序 插入排序 快速排序 系统方法

  • 排序算法

    冒泡排序 选择排序 插入排序 归并排序 快速排序 数组内置方法

  • 基数排序

    基数排序已经不再是一种常规排序方法,它更多地像一种排序方法的应用,基数排序必须依赖于另外的排序方法。基数排序的总体...

  • pandas高级特性

    1.pandas排序 按标签排序使用sort_index方法实现按标签排序 sort_index方法默认升序排序,...

网友评论

      本文标题:排序方法

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