国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js排序算法(一)

v1 / 2576人閱讀

摘要:冒泡排序算法即相鄰的兩個元素進行比較,如果前一個元素比后一個元素大,則將這兩個元素換位,即將較大的元素后置。重復操作,每次都將的值折半比較,直到,唯的時候排序操作結束。歸并排序通過遞歸的方式不斷的合并兩個有序數組完成數組的排序

1. 冒泡排序算法: 即相鄰的兩個元素進行比較,如果前一個元素比后一個元素大,則將這兩個元素換位,即將較大的元素后置。

內循環每走一次都會將前length - i個元素中的最大元素放到length - i 的位置上。

var data = [1, 49, 30, 80, 6, 2, 18, 15, 23, 78, 16, 5, 4, 2, 34, 35, 46, 18]
function bubble(arr) {
  var length = arr.length
  for (var i = 0; i < length; i++) {
    for(var j = 0; j < length - 1 -i; j++) {
      var temp = arr[j]
      if (arr[j] > arr[j+1]) {
        arr[j] = arr[j+1]
        arr[j+1] = temp
      }
    }
  }
  console.log(arr)
}

bubble(data)
2. 選擇排序算法: 每次循環都選擇最小值,然后將其與當前位置的值進行互換操作即可
function select(arr) {
  var minIndex
  var temp
  for (var i = 0; i < arr.length-1; i++) {
    minIndex = i
    for(var j = i + 1; j < arr.lenght - i - 1; j++) {
      if (arr[j] < arr[minIndex]) {
        minIndex = j
      }
    }
    temp = arr[i]
    arr[i] =  arr[minIndex]
    arr[minIndex] = temp
  }
  console.log(arr)
}
select(data)
3. 插入排序: 如果前一個的值比當前值小則二者換位, 直到將這個碰見比前一個值小的數為止
function insert(arr) {
  for (var i=1; i= 0 && arr[preIndex] > current) {
      arr[preIndex+1] = arr[preIndex]
      preIndex--
    }
    arr[preIndex+1] = current
  }
  console.log(arr)
}
insert(data)
4. 希爾排序: 先將arr分成arr.length/2組,其中index=1和index=length/2 + 1為一組,

如果length/2的值比較小則互換位置。重復操作,每次都將gap的值折半比較,
直到,gap唯1的時候排序操作結束。

function shell(arr) {
  function swap(array, i, k) {
    var temp = array[i]
    array[i] = array[k]
    array[k] = temp
  }
  var gap = Math.floor(arr.length / 2)
  while(gap > 0) {
    for(var i=gap; i0; j-=gap) {
        if (arr[j-gap] > arr[j]) {
          swip(arr, j-gap, j)
        }
      }
    }
     gap = Math.floor(gap / 2)
  }
  console.log(arr)
}
shell(data)
5. 歸并排序: 通過遞歸的方式不斷的合并兩個有序數組完成數組的排序
function mergeSort(arr) {
  var len = arr.length;
  if (len < 2) {
    return arr
  }
  var middle = Math.floor(len / 2)
  var left = arr.slice(0, middle)
  var right = arr.slice(middle)
  return merge(mergeSort(left), mergeSort(right))
}

function merge(left, right) {
    var result = [];

    while (left.length && right.length) {
        if (left[0] <= right[0]) {
            result.push(left.shift());
        } else {
            result.push(right.shift());
        }
    }

    while (left.length)
        result.push(left.shift());

    while (right.length)
        result.push(right.shift());
    return result;
}
console.log(mergeSort(data))

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/81311.html

相關文章

  • JS數據結構與算法_排序和搜索算法

    摘要:上一篇數據結構與算法樹寫在前面這是學習數據結構與算法的最后一篇博客,也是在面試中常常會被問到的一部分內容排序和搜索。 上一篇:JS數據結構與算法_樹 寫在前面 這是《學習JavaScript數據結構與算法》的最后一篇博客,也是在面試中常常會被問到的一部分內容:排序和搜索。在這篇博客之前,我每每看到排序頭就是大的,心里想著類似冒泡排序,兩層遍歷啪啪啪就完事了,然后再也無心去深入研究排序相...

    姘擱『 評論0 收藏0
  • 使用JS實現三種基本的排序算法以及三種算法的比較

    摘要:介紹排序算法是算法中最常見的算法之一,我這里要介紹的是排序算法中的三種基本算法冒泡排序選擇排序插入排序,在文章的后面我會對三種算法的速度進行對比。 1.介紹 排序算法是算法中最常見的算法之一,我這里要介紹的是排序算法中的三種基本算法:冒泡排序、選擇排序、插入排序,在文章的后面我會對三種算法的速度進行對比。 2.冒泡排序 冒泡排序其名來源與其算法實現,會使得數組中的元素一個個從數組一端漂...

    wh469012917 評論0 收藏0
  • 排序算法分析總結(附js實現)

    摘要:本文對一些排序算法進行了簡單分析,并給出了的代碼實現。平均時間復雜度不好分析,它是冒泡排序是穩定的排序算法。冒泡排序是原地排序算法原地排序指的是空間復雜度是的排序算法。歸并排序,會將數組從中間分成左右兩部分。 本文對一些排序算法進行了簡單分析,并給出了 javascript 的代碼實現。因為本文包含了大量的排序算法,所以分析不會非常詳細,適合有對排序算法有一定了解的同學。本文內容其實不...

    liaoyg8023 評論0 收藏0
  • JS排序算法

    摘要:冒泡排序冒泡算法是比較相鄰的兩項,如果前者比后者大,就交換他們。插入排序最好情況下時間復雜度是,其他情況下也都是。代碼演示插入排序歸并排序原生里面的方法,在里面是用歸并排序實現的,而在里面是用快速排序的變體來實現的。 1、冒泡排序 冒泡算法是比較相鄰的兩項,如果前者比后者大,就交換他們。 假設一共有n項,那么一共需要n-1趟,第一趟需要交換n-1次,但是第一趟結束后,最后一項基本確定就...

    notebin 評論0 收藏0
  • JS排序算法

    摘要:冒泡排序冒泡算法是比較相鄰的兩項,如果前者比后者大,就交換他們。插入排序最好情況下時間復雜度是,其他情況下也都是。代碼演示插入排序歸并排序原生里面的方法,在里面是用歸并排序實現的,而在里面是用快速排序的變體來實現的。 1、冒泡排序 冒泡算法是比較相鄰的兩項,如果前者比后者大,就交換他們。 假設一共有n項,那么一共需要n-1趟,第一趟需要交換n-1次,但是第一趟結束后,最后一項基本確定就...

    sihai 評論0 收藏0
  • JS中可能用得到的全部的排序算法

    本篇有7k+字, 系統梳理了js中常見的12種排序算法。除了基本排序算法,文章還包含了希爾排序、堆排序、桶排序等較為復雜的排序實現,如果喜歡請點贊支持~謝謝. 原文: http://louiszhai.github.io/20... 導讀 排序算法可以稱得上是我的盲點, 曾幾何時當我知道Chrome的Array.prototype.sort使用了快速排序時, 我的內心是奔潰的(啥是快排, 我只知道...

    verano 評論0 收藏0

發表評論

0條評論

v1

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<