摘要:如有錯(cuò)誤,請(qǐng)指出,請(qǐng)?jiān)徝芭菖判蚓W(wǎng)上給出的原理是通過比較兩個(gè)相鄰的值,如果左邊比右邊大,則把左右位置替換循環(huán)完成之后結(jié)果是,發(fā)現(xiàn)有些數(shù)字排列不對(duì),還需要再次循環(huán)在每個(gè)進(jìn)入循環(huán)時(shí),應(yīng)該嵌套一個(gè)循環(huán),遍歷數(shù)組,進(jìn)行大小比對(duì)。
一直沒寫過和想過排序算法,今天搜了一下原理,自己嘗試了一下。
如有錯(cuò)誤,請(qǐng)指出,請(qǐng)?jiān)?br>冒泡排序
網(wǎng)上給出的原理是通過比較兩個(gè)相鄰的值,如果左邊比右邊大,則把左右位置替換
var arr = [2, 6, 5, 4, 12, 8, 25, 34, 22, 45, 41, 89, 67] for (var i = 0; i < arr.length; i++) { if (arr[i] > arr[i+1]) { var right = arr [i] arr[i] = arr[i+1] arr[i+1] = right } } 循環(huán)完成之后結(jié)果是[2, 5, 4, 6, 8, 12, 25, 22, 34, 41, 45, 67, 89],發(fā)現(xiàn)有些數(shù)字排列不對(duì),還需要再次循環(huán),在每個(gè)i進(jìn)入循環(huán)時(shí),應(yīng)該嵌套一個(gè)循環(huán),遍歷數(shù)組,進(jìn)行大小比對(duì)。 改進(jìn)后的代碼 for (var i = 0; i < arr.length-1; i++) { for (var s = 0; s < arr.length - i - 1; s++) { if (arr[s] > arr[s+1]) { var right = arr [s] arr[s] = arr[s+1] arr[s+1] = right } } 由于第一次循環(huán)完成之后,最大的數(shù)字是排在最后的,所以最后一個(gè)循環(huán)可以不需要。 console.log(arr) // [2, 4, 5, 6, 8, 12, 22, 25, 34, 41, 45, 67, 89]
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/83726.html
摘要:經(jīng)過一次冒泡排序,最終在無序表中找到一個(gè)最大值,第一次冒泡結(jié)束。也是我們后面要說的冒泡排序的優(yōu)化。冒泡排序只執(zhí)行第一層循環(huán),而不會(huì)執(zhí)行第二層循環(huán)。因此冒泡排序的時(shí)間復(fù)雜度是。 showImg(https://user-gold-cdn.xitu.io/2019/6/19/16b6f986df6880f9?w=640&h=142&f=gif&s=17175);showImg(https:...
摘要:之所以把冒泡排序選擇排序插入排序放在一起比較,是因?yàn)樗鼈兊钠骄鶗r(shí)間復(fù)雜度都為。其中,冒泡排序就是原地排序算法。所以冒泡排序是穩(wěn)定的排序算法。選擇排序思路選擇排序算法的實(shí)現(xiàn)思路有點(diǎn)類似插入排序,也分已排序區(qū)間和未排序區(qū)間。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 1. 前言 算法為王。 想學(xué)好前端,先練好內(nèi)功,...
摘要:本文對(duì)一些排序算法進(jìn)行了簡(jiǎn)單分析,并給出了的代碼實(shí)現(xiàn)。平均時(shí)間復(fù)雜度不好分析,它是冒泡排序是穩(wěn)定的排序算法。冒泡排序是原地排序算法原地排序指的是空間復(fù)雜度是的排序算法。歸并排序,會(huì)將數(shù)組從中間分成左右兩部分。 本文對(duì)一些排序算法進(jìn)行了簡(jiǎn)單分析,并給出了 javascript 的代碼實(shí)現(xiàn)。因?yàn)楸疚陌舜罅康呐判蛩惴ǎ苑治霾粫?huì)非常詳細(xì),適合有對(duì)排序算法有一定了解的同學(xué)。本文內(nèi)容其實(shí)不...
摘要:多練練排序算法,不僅能夠讓我們知道一些排序方法的底層實(shí)現(xiàn)細(xì)節(jié),更能夠鍛煉我們的思維,提升編程能力。排序算法的穩(wěn)定性一個(gè)穩(wěn)定的排序,指的是在排序之后,相同元素的前后順序不會(huì)被改變,反之就稱為不穩(wěn)定。 1. 導(dǎo)言 因?yàn)檫@是排序算法系列的第一篇文章,所以多啰嗦幾句。 排序是很常見的算法之一,現(xiàn)在很多編程語言都集成了一些排序算法,比如Java 的Arrays.sort()方法,這種方式讓我們可...
摘要:一前言冒泡排序是一種交換排序。以升序冒泡排序?yàn)槔?,冒泡排序就是要每趟排序過程中通過兩兩比較相鄰元素,將小的數(shù)字放到前面,大的數(shù)字放在后面。所以,冒泡排序最好時(shí)間復(fù)雜度為。因此,冒泡排序的平均時(shí)間復(fù)雜度為。 一、前言 冒泡排序是一種交換排序。 什么是交換排序呢? 解:兩兩比較待排序的關(guān)鍵字,并交換不滿足次序要求的那對(duì)數(shù),直到整個(gè)表都滿足次序要求為止。 二、算法思想 它重復(fù)地走訪要排序的...
閱讀 1705·2021-09-22 15:25
閱讀 1619·2021-09-07 10:06
閱讀 3254·2019-08-30 15:53
閱讀 1153·2019-08-29 13:12
閱讀 3458·2019-08-29 13:07
閱讀 803·2019-08-28 18:19
閱讀 2349·2019-08-27 10:57
閱讀 1043·2019-08-26 13:29