算法(一)--選擇排序和冒泡排序

選擇排序基本思想

首先選取數(shù)組的第一項當做考察對象,循環(huán)遍歷數(shù)組的每一項找到最小項的下標署咽,將第一項和最小項交換位置生音,接著考察第二項,依次類推慕匠。瑟由。。

代碼解析

考慮到需要交換數(shù)組內(nèi)兩項直接的位置青伤,我們先寫一個交換位置的函數(shù):

/**
 * 交換數(shù)組中索引a和索引b的值得位置
 * @param {* 需要改變的數(shù)組} arr 
 * @param {* 第一個值得索引} a 
 * @param {* 第二個值得索引} b 
 */
function swap(arr, a, b) {
    var temp = arr[a];
    arr[a] = arr[b];
    arr[b] = temp;
}

接下來我們看看排序的具體寫法:

  /**
 * 選擇排序方法
 * @param {* 需要排序的數(shù)組} arr 
 * @param {* 數(shù)組的長度} n 
 */
selectionSort = (arr, n) => {
    for (let i = 0; i < n; i++) {
        let minIndex = i
        for (let j = i + 1; j < n; j++) {
            //arr[j] < arr[minIndex] 可以抽象成一個函數(shù) 例如less()return一個boolean 
            //更高的抽象可以將這個less函數(shù)以函數(shù)指針的傳遞進來  這個樣函數(shù)就更靈活
            if (arr[j] < arr[minIndex]) {
               //儲存當前最小值的下標
                minIndex = j
            }
        }
        // [arr[minIndex], arr[j]] = [arr[j], arr[minIndex]]
        swap(arr, i, minIndex)
    }
}

示例代碼是從小到大的順序來排列的狠角,minIndex的值始終保存著數(shù)組中最下值得下標丰歌。
當然我們可以改變if判斷的內(nèi)容來靈活的使用選擇排序屉凯,
代碼中在也用到了es6的結構賦值的方式來交換數(shù)組內(nèi)的位置,根據(jù)實際測試晓勇,測試10000數(shù)據(jù)的時候預計多消耗.3s的性能。推薦使用swap函數(shù)的方式來實現(xiàn)

冒泡排序基本思想

  • 比較相鄰的元素绰筛。如果第一個比第二個大铝噩,就交換他們兩個窿克。
  • 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對让歼。在這一點,最后的元素應該會是最大的數(shù)硬猫。
  • 針對所有的元素重復以上的步驟啸蜜,除了最后一個。
  • 持續(xù)每次對越來越少的元素重復上面的步驟衬横,直到?jīng)]有任何一對數(shù)字需要比較蜂林。

示例代碼如下:

/**
 * 冒泡排序
 * @param {* 需要排序的數(shù)組} arr 
 * @param {* 數(shù)組長度} n 
 */
bubbleSort = (arr, n) => {
    for (i = 0; i < n - 1; i++) {
        for (j = 0; j < n - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                var temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
       // log(arr)
    }
}

代碼解析:

主要就說一下兩次遍歷拇泣,第一層循環(huán)0 <= i < n-1 因為當i到n-2的時候i數(shù)組就沒有可以比較的了。第二層循環(huán)0 <= j <n-1-i霉翔,為什么要剪掉一個i债朵?每次循環(huán)完成一次混亂數(shù)組里面最大值就到數(shù)組的最后變成有序數(shù)組的一部分,也就不需要考察到了臭杰,

以上都是個人理解如有不對之處還望指正交流谚中!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蝌麸,更是在濱河造成了極大的恐慌,老刑警劉巖敢辩,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戚长,死亡現(xiàn)場離奇詭異怠苔,居然都是意外死亡柑司,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玻粪,“玉大人,你說我怎么就攤上這事伦仍”约” “怎么了蹲缠?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵线定,是天一觀的道長。 經(jīng)常有香客問我纱皆,道長,這世上最難降的妖魔是什么派草? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任艺普,我火速辦了婚禮鉴竭,結果婚禮上,老公的妹妹穿的比我還像新娘搏存。我一直安慰自己璧眠,他們只是感情好责静,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布泰演。 她就那樣靜靜地躺著,像睡著了一般藐握。 火紅的嫁衣襯著肌膚如雪猾普。 梳的紋絲不亂的頭發(fā)上初家,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天乌助,我揣著相機與錄音他托,去河邊找鬼。 笑死赏参,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的腰涧。 我是一名探鬼主播南窗,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼郎楼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了窒悔?” 一聲冷哼從身側(cè)響起呜袁,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎简珠,沒想到半個月后阶界,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡聋庵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年膘融,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祭玉。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡氧映,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出脱货,到底是詐尸還是另有隱情岛都,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布臼疫,位于F島的核電站,受9級特大地震影響鸽斟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜格粪,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧澈段,春花似錦、人聲如沸芬骄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雄嚣。三九已至鼓鲁,卻和暖如春歧寺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人构哺。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓湖笨,卻偏偏與公主長得像眠菇,于是被迫代替她去往敵國和親笑窜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Ba la la la ~ 讀者朋友們,你們好啊宦搬,又到了冷鋒時間,話不多說,發(fā)車四瘫! 1.冒泡排序(Bub...
    王飽飽閱讀 1,797評論 0 7
  • 冒泡排序 冒泡排序相對來說是較為簡單的一種排序,它的思想就是在每一次循環(huán)中比較相鄰的兩個數(shù),通過交換的方式,將最小...
    陌上疏影涼閱讀 586評論 0 3
  • 有十年沒有在高校迎新的銷售現(xiàn)場來過了杯缺,新部門,新要求,讓我有機會在近不惑之年重回高形鸶海看看锭硼。 繁忙之于漫步在...
    童小咪閱讀 266評論 0 0
  • 作為一個還沒主兒的大姑涼搭独,我知道找到那個屬于我的靈魂的機會會越來越少。在一個直男癌還蠻多的環(huán)境中(畢竟,很多的理想...
    醉黎喵閱讀 461評論 0 0
  • 1.感恩陳醫(yī)生為我最后一次治好了牙齒,感謝你無比的耐心周報到。 2.30號那天晚上太匆忙沒把所有數(shù)據(jù)拷全乓序,導致我要...
    云的翅膀_2d4d閱讀 185評論 0 0