摘要:開始時間結束時間優(yōu)化版本記錄最后交換的位置,可減少循環(huán)的次數(shù)開始時間結束時間選擇排序描述選擇排序是一種簡單直觀的排序算法。以此類推,直到所有元素均排序完畢。
冒泡排序
描述:
冒泡排序是一種簡單的排序算法。它重復地走訪過要排序的數(shù)列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。走訪數(shù)列的工作是重復地進行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。這個算法的名字由來是因為越小的元素會經(jīng)由交換慢慢“浮”到數(shù)列的頂端。
function bubbleSort(arr) { console.log("開始時間", 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("結束時間", new Date().getTime()) return arr }
優(yōu)化版本(記錄最后交換的位置,可減少循環(huán)的次數(shù))
function bubbleSort2(arr) { console.log("開始時間", 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("結束時間", new Date().getTime()) return arr }選擇排序
描述:
選擇排序(Selection-sort)是一種簡單直觀的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再從剩余未排序元素中繼續(xù)尋找最小(大)元素,然后放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
function selectionSort(arr) { console.log("開始時間", 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("結束時間", new Date().getTime()) return arr }
優(yōu)化(同時把最小和最大值放在首位和末尾)
function selectionSort2(arr) { console.log("開始時間", 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("結束時間", new Date().getTime()) return arr }
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/95641.html
摘要:排序,數(shù)組去重,打亂數(shù)組,統(tǒng)計數(shù)組各個元素出現(xiàn)的次數(shù),字符串各個字符的出現(xiàn)次數(shù),獲取地址鏈接的各個參數(shù)以后會記錄自己解決過和遇到過的算法相關的題,系列一就以常見的開篇吧。 排序,數(shù)組去重,打亂數(shù)組,統(tǒng)計數(shù)組各個元素出現(xiàn)的次數(shù), 字符串各個字符的出現(xiàn)次數(shù),獲取地址鏈接的各個參數(shù) 以后會記錄自己解決過和遇到過的算法相關的題,系列一就以常見的開篇吧。 排序 本來想多列幾個排序方法,但是其它都...
摘要:背包問題從給定的無序不重復的數(shù)組中,取出個數(shù),使其相加和為這個算法有很多擴展,比如電商中購物車中的計算,滿減,不滿會在熱銷商品中進行推薦填充。 背包問題:從給定的無序、不重復的數(shù)組 A 中,取出 N 個數(shù),使其相加和 為 M 這個算法有很多擴展,比如電商中購物車中的計算,滿100減20,不滿100會在熱銷商品中進行推薦填充。 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ù),記錄一共進行了多少次交換數(shù)組長度為輸出數(shù)組成都外層循環(huán)排序出數(shù)組的的值交換標志內(nèi)層循環(huán),從底往上冒泡,將小泡浮到位置比較兩個元素大小,并交換位置確定交換標志記錄比較元素的次數(shù)共交換了次輸出數(shù) 1.冒泡排序 function bubbleSort(arr) { var temp; ...
閱讀 1848·2021-11-22 15:24
閱讀 1307·2021-11-12 10:36
閱讀 3194·2021-09-28 09:36
閱讀 1837·2021-09-02 15:15
閱讀 2745·2019-08-30 15:54
閱讀 2391·2019-08-30 11:02
閱讀 2392·2019-08-29 13:52
閱讀 3539·2019-08-26 11:53