常见算法

2021-04-07 16:28

阅读:456

标签:重复   sel   ++   swa   最大   就是   代码   完成后   length   

排序

冒泡排序

  • 从第一个元素开始,把当前元素和下一个索引元素进行比较。如果当前元素大,那么就交换位置,重复操作比较至最后一个元素,此时最后一个元素就是最大的数。下一轮重复以上操作,此时无需比较最后一个元素,只需比较到length-2位置。
  • 实现代码如下:
function bubble(array) {
      checkArray(array)
      for (let i = array.length - 1; i > 0; i--) {
            for (let j = 0; j  array[j + 1]) swap(array, j, j+1)
            }
      }
      return array
}
  • 该算法操作次数是一个等差数列n + (n - 1) + (n - 2) + 1,,去掉常数项以后得出时间复杂度是 O(n * n)

插入排序

  • 第一个元素默认是已排序元素,取出下一个元素和当前元素比较,如果当前元素大就交换位置,那么此时第一个元素就是当前最小值,所以下次取出操作从第三个元素开始,向前对比,重复之前的操作。
  • 实现代码如下:
function insertion(arr) {
      if (!checkArray(arr)) return
      for (let i = 1; i  0 && arr[j] > arr[j + 1]; j --) {
                  swap(array, j, j + 1)
            }
      }
}
  • 该算法操作次数是一个等差数列n + (n - 1) + (n - 2) + 1,,去掉常数项以后得出时间复杂度是 O(n * n)

选择排序

  • 原理如下:遍历数组,设置最小值的索引为0,如果取出的值比当前最小值小,就替换最小值索引;遍历完成后,将第一个元素和最小值索引上的值交换。从索引1 开始重复操作。
  • 实现代码如下:
function selection(arr) {
    if (!checkArr(arr)) return
    for (let i = 0; i 
  • 该算法操作次数是一个等差数列n + (n - 1) + (n - 2) + 1,,去掉常数项以后得出时间复杂度是 O(n * n)

常见算法

标签:重复   sel   ++   swa   最大   就是   代码   完成后   length   

原文地址:https://www.cnblogs.com/jgx2020/p/13387826.html

上一篇:java操作zookeeper

下一篇:Java多线程总结


评论


亲,登录后才可以留言!