冒泡排序

2018-09-11 02:00 更新

實(shí)現(xiàn)冒泡排序 這是排序算法的第一個(gè)挑戰(zhàn)。給定一個(gè)未排序的數(shù)組,然后經(jīng)過排序返回一個(gè)有順序的數(shù)組。在接下來的算法挑戰(zhàn)中,我們將通過幾種不同的方法來實(shí)現(xiàn)排序,并在這些不同的方法之間學(xué)習(xí)一些權(quán)衡。雖然大多數(shù)現(xiàn)代語(yǔ)言都有內(nèi)置的這種操作的排序方法,但仍然需要了解一些常見的基本方法,并了解如何實(shí)現(xiàn)它們。 冒泡排序思想 在這里我們將看到冒泡排序。冒泡排序通過重復(fù)地走訪過要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過來。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。

該方法需要通過數(shù)組進(jìn)行多次迭代,平均和最差情況下都具有二次時(shí)間復(fù)雜度。 整形數(shù)組未排序前的順序如下: [42,20,17,13,28,14,23,15] 第一趟排序,我們從后一個(gè)元素15開始,不斷與之相鄰的元素進(jìn)行比較,如果比15大,則交換位置,如果比15小,就交換比較元素,第一趟之后,我們得到數(shù)組里的最小元素13,而且13也位于數(shù)組的第一個(gè)元素了,通過不斷的排序比較,在比較了數(shù)組長(zhǎng)度-1次以后,該數(shù)組的所有元素已經(jīng)根據(jù)大小排好順序了

var array = [];
(function createArray(size) {
  array.push(+(Math.random() * 100).toFixed(0));
  return (size > 1) ? createArray(size - 1) : undefined;
})(12);


function bubbleSort(array) {
  // change code below this line
  /*for (var i = 0; i <array.length-1; i++) {
      for(var j=i+1;j<array.length;j++){
          if (array[i]>array[j]) {
              var temp;
              temp=array[i];
              array[i]=array[j];
              array[j]=temp;

              
          }

           
      }

     
  }*/
  for (var i = 0; i <array.length-1; i++) {
      for(var j=0;j<array.length-1-i;j++){
          if (array[j]>array[j+1]) {
              var temp;
              temp=array[j];
              array[j]=array[j+1];
              array[j+1]=temp;

              
          }

           
      }

     
  }

  
  return array;
}
bubbleSort(array);
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)