當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JavaScript算法相关
生活随笔
收集整理的這篇文章主要介紹了
JavaScript算法相关
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 排序
1.1.冒泡排序
- 每一輪比較,從左至右交換相鄰,每輪結束,最后一個為最大
- 下一輪,需要比較的個數 - 1 j < len - i (范圍動態縮小)
- 共 len - 1 輪比較
冒泡排序算法改進思想:
- 個數較多的排序,(比如)從第6輪開始,數列已經有序,然而排序算法依然會執行第7、8輪直到結束:添加標志,一開始為1,只要有交換便置為0,在外層循環里添加if判斷,if(標志為1) { break }
- 當序列中某一段在比較之前就已經就是有序的:可以在每一輪排序的最后,記錄下最后一次元素交換的位置,那個位置也就是無序數列的邊界,再往后就是有序區了
- 正反向冒泡排序
循序漸進的過程:
冒泡排序2次改進
JavaScript算法(含冒泡排序3次改進)
1.2. 選擇排序
思想:
- len-1 輪排序
- 每輪排序,選出最小的數,放在最前的位置
1.3. 插入排序
思想: 打牌
1.4. 希爾排序
- 確定一個增量
-
1.5. 快速排序
- 首先設定一個分界值,通過該分界值將數組分成左右兩部分。
- 將大于或等于分界值的數據集中到數組右邊,小于分界值的數據集中到數組的左邊。
- 然后,左邊和右邊的數據可以獨立排序。對于左側的數組數據,又可以取一個分界值,將該部分數據分成左右兩部分,同樣在左邊放置較小值,右邊放置較大值。右側的數組數據也可以做類似處理。
- 重復上述過程,可以看出,這是一個遞歸定義。通過遞歸將左側部分排好序后,再遞歸排好右側部分的順序。當左、右兩個部分各數據排序完成后,整個數組的排序也就完成了。
1.6. 隨機排序
- Math.random()得到的是0~1之間的隨機數;
- sort()可以調用一個函數做為參數,這個函數接收(a,b)兩個參數,
① a<b返回-1 (小于0的值)
② a=b返回0,
③ a>b返回1(大于0的值),
以這樣的規則返回正負數的函數,排序結果為升序;
- 讓Math.random()隨機出來的數與0.5做為一個比較,為正為負的幾率各一半
2. 函數柯里化
詳解JS函數柯里化
3. 技巧方法
- 字符串倒序
- 斐波那契
- 數組最值
總結
以上是生活随笔為你收集整理的JavaScript算法相关的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java multimap 序列化_C+
- 下一篇: javascript基本功