摘要:開始時(shí)間結(jié)束時(shí)間優(yōu)化版本記錄最后交換的位置,可減少循環(huán)的次數(shù)開始時(shí)間結(jié)束時(shí)間選擇排序描述選擇排序是一種簡單直觀的排序算法。以此類推,直到所有元素均排序完畢。
冒泡排序
描述:
冒泡排序是一種簡單的排序算法。它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個(gè)元素,如果它們的順序錯(cuò)誤就把它們交換過來。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。這個(gè)算法的名字由來是因?yàn)樵叫〉脑貢?huì)經(jīng)由交換慢慢“浮”到數(shù)列的頂端。
function bubbleSort(arr) { console.log("開始時(shí)間", new Date().getTime()) var length = arr.length for (var i = 0; i < length; i++) { for (var j = 0; j < length - i - 1; j++) { if (arr[j] > arr[j + 1]) { let temp = arr[j] arr[j] = arr[j+1] arr[j+1] = temp } } } console.log("結(jié)束時(shí)間", new Date().getTime()) return arr }
優(yōu)化版本(記錄最后交換的位置,可減少循環(huán)的次數(shù))
function bubbleSort2(arr) { console.log("開始時(shí)間", new Date().getTime()) var i = arr.length - 1 while(i > 0) { var pos = 0 for (var j = 0; j < i; j++) { if (arr[j] > arr[j + 1]) { pos = j let temp = arr[j] arr[j] = arr[j+1] arr[j+1] = temp } } i = pos } console.log("結(jié)束時(shí)間", new Date().getTime()) return arr }選擇排序
描述:
選擇排序(Selection-sort)是一種簡單直觀的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再從剩余未排序元素中繼續(xù)尋找最?。ù螅┰?,然后放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
function selectionSort(arr) { console.log("開始時(shí)間", new Date().getTime()) var length = arr.length var minIndex, temp for (var i = 0; i <= length -1; i++) { minIndex = i; for (var j = i; j <= length -1; j ++) { if (arr[j] < arr[minIndex]) { minIndex = j } } temp = arr[i] arr[i] = arr[minIndex] arr[minIndex] = temp } console.log("結(jié)束時(shí)間", new Date().getTime()) return arr }
優(yōu)化(同時(shí)把最小和最大值放在首位和末尾)
function selectionSort2(arr) { console.log("開始時(shí)間", new Date().getTime()) var length = arr.length var minIndex, temp, maxIndex for (var i = 0; i <= length -i -1; i++) { minIndex = i; maxIndex = length - 1 -i for (var j = i; j <= length -1 - i; j ++) { if (arr[j] < arr[minIndex]) { minIndex = j } if (arr[j] > arr[maxIndex]) { maxIndex = j } } temp = arr[i] arr[i] = arr[minIndex] arr[minIndex] = temp temp = arr[length - 1 - i] arr[length - 1 - i] = arr[maxIndex] arr[maxIndex] = temp } console.log("結(jié)束時(shí)間", new Date().getTime()) return arr }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/95641.html
摘要:排序,數(shù)組去重,打亂數(shù)組,統(tǒng)計(jì)數(shù)組各個(gè)元素出現(xiàn)的次數(shù),字符串各個(gè)字符的出現(xiàn)次數(shù),獲取地址鏈接的各個(gè)參數(shù)以后會(huì)記錄自己解決過和遇到過的算法相關(guān)的題,系列一就以常見的開篇吧。 排序,數(shù)組去重,打亂數(shù)組,統(tǒng)計(jì)數(shù)組各個(gè)元素出現(xiàn)的次數(shù), 字符串各個(gè)字符的出現(xiàn)次數(shù),獲取地址鏈接的各個(gè)參數(shù) 以后會(huì)記錄自己解決過和遇到過的算法相關(guān)的題,系列一就以常見的開篇吧。 排序 本來想多列幾個(gè)排序方法,但是其它都...
摘要:背包問題從給定的無序不重復(fù)的數(shù)組中,取出個(gè)數(shù),使其相加和為這個(gè)算法有很多擴(kuò)展,比如電商中購物車中的計(jì)算,滿減,不滿會(huì)在熱銷商品中進(jìn)行推薦填充。 背包問題:從給定的無序、不重復(fù)的數(shù)組 A 中,取出 N 個(gè)數(shù),使其相加和 為 M 這個(gè)算法有很多擴(kuò)展,比如電商中購物車中的計(jì)算,滿100減20,不滿100會(huì)在熱銷商品中進(jìn)行推薦填充。 function getCombBySum(array,su...
摘要:原文鏈接排序算法冒泡排序從小到大排序從大到小排序快速排序這里用,被換過來的必然比小,賦值后直接讓自加,不用再比較,可以提高效率這里用,被換過來的必然比大,賦值后直接讓自減,不用再比較,可以提高效率二路歸并字符串操作判斷回文字 原文鏈接 排序算法 1、冒泡排序 function bubbleSort(arr){ var i = 0, j = 0; for(i=1; i...
1.快速排序法 function quickSort(a) { if (a.length a[j+1]) { sortArray = a[j]; a[j] = a[j+1]; ...
摘要:冒泡排序臨時(shí)交換變量記錄數(shù)組長度計(jì)數(shù),記錄一共進(jìn)行了多少次交換數(shù)組長度為輸出數(shù)組成都外層循環(huán)排序出數(shù)組的的值交換標(biāo)志內(nèi)層循環(huán),從底往上冒泡,將小泡浮到位置比較兩個(gè)元素大小,并交換位置確定交換標(biāo)志記錄比較元素的次數(shù)共交換了次輸出數(shù) 1.冒泡排序 function bubbleSort(arr) { var temp; ...
閱讀 1919·2021-11-22 15:24
閱讀 1362·2021-11-12 10:36
閱讀 3283·2021-09-28 09:36
閱讀 1918·2021-09-02 15:15
閱讀 2819·2019-08-30 15:54
閱讀 2441·2019-08-30 11:02
閱讀 2458·2019-08-29 13:52
閱讀 3598·2019-08-26 11:53