這次帶給大家JS實作最簡單的查找、排序、去重演算法,JS實作查找、排序、去重的注意事項有哪些,下面就是實戰案例,一起來看一下。
今天總結了下排序簡單的演算法
【自訂排序】
先找一個最小的數,然後依次那這個數和陣列中其他數字比較,如果發現比這個數字小的數字就把這兩個數字調換位置,然後再繼續尋找下一個最小的數字進行下一輪比較
var arr = [31, 6, 19, 8, 2, 3]; function findMin(start, arr) { var iMin = arr[start]; var iMinIndex = start; for (var i = start + 1; i <p style="text-align: left;">【線性查找】:一個一個去找出</p> <pre class="brush:php;toolbar:false">//不重复 有序 var arr = [0]; for (var i = 1; i <p style="text-align: left;">【<a href="http://www.php.cn/code/12110.html" target="_blank">二分查找</a>】:不停的分成兩個部分,分部分查找</p><p style="text-align: left;">是一種萬能方法,不一定是最好的,但是個保底的方法。 (分治法)</p><p style="text-align: left;">***中間值相加除以二,統一偏左,向下取整</p><pre class="brush:php;toolbar:false">//不重复 有序 var arr = [12, 17, 23, 34, 45, 76, 89]; function find2(n, s, e) { //边界处理 if (s > e) { return false; } else if (s == e) { if (arr[s] == n) { return true; } else { return false; } } var c = Math.floor((s + e) / 2); if (arr[c] == n) { return true; } else { if (n <p style="text-align: left;">【邊界處理】-----遞歸,一層一層往下找</p><pre class="brush:php;toolbar:false">//要求数组不重复有顺序\ var arr = [12, 23, 34, 45, 56, 67, 78] function find2(n, s, e) { if (s > e) { return fasle; } else if (s == e) { if (arr[s] == e) { return true; } else { return false; } } var c = Math.floor((s + e) / 2); if (arr[c] == n) { return true; } else { if (n <p style="text-align: left;">套用</p><p style="text-align: left;">【找出最小值】</p><pre class="brush:php;toolbar:false">var arr = [12, 54, 32, 9, 5, 3, 1, 101, -100, -1000]; function findMin(s, e) { if (s > e) { return []; } else if (s == e) { return arr[s]; } else if (s == e - 1) { if (arr[s] <p style="text-align: left;">【陣列去重】</p><pre class="brush:php;toolbar:false">var arr = [1, 2, 3, 4, 5, 4, 3, 4, 5, 2, 1, 4, 2, 1, 5, 7]; function findInArr(n, arr) { for (var i = 0; i e) { return []; } else if (s == e) { return [arr[s]]; } else if (s == e - 1) { if (arr[s] == arr[e]) { return [arr[s]]; } else { return [arr[s], arr[e]] } } var c = Math.floor((s + e) / 2); var l = removeCopy(s, c); var r = removeCopy(c + 1, e); for (var i = 0; i <p style="text-align: left;">【<a href="http://www.php.cn/code/54.html" target="_blank">陣列排序</a>】</p><pre class="brush:php;toolbar:false">var arr = [34, 32, 1, 76, 55, -100, 99, 101]; function mySort(s, e) { //边界处理 if (s > e) { return []; } else if (s == e) { return [arr[s]] } else if (s == e - 1) { if (arr[s] 0 || r.length > 0) { if (l[0] <p style="text-align: left;"><a href="http://www.php.cn/code/12106.html" target="_blank">冒泡排序</a> BubbleSort</p><p style="text-align: left;">#循環,每次拿出兩個值,兩兩比較,如果下一個值比目前的小,那麼交換位置</p><p style="text-align: left;">外層循環是循環取數,內層循環是兩兩交換比較</p><pre class="brush:php;toolbar:false">var arr = [ - 122, -2, 5, 6, 73, 34, 5, 2]; function BubbleSort(arr) { for (var i = 0; i arr[j + 1]) { var tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp } } } return arr; } document.write(BubbleSort(arr));
【快速排序】 -------quickSort
取數組中間的數,比中間數小的房中間數左邊,比中間數大的放右邊,再把兩遍鏈接起來
function quickSort(arr, s, e) { //边界处理 参与流程 if (arr.length == 0) { return []; } var c = Math.floor((s + e) / 2); var arrC = arr.splice(c, 1); var l = []; var r = []; for (var i = 0; i <p style="text-align: left;">【散列】 hash 哈希數組------ js常用用的結構</p><p style="text-align: left;">添加</p><pre class="brush:php;toolbar:false">var arr = []; arr.length = 0; var cont = 0; function hash_add(n) { var pos = n % arr.length; //当空间不足的时候 if (arr[pos]) { while (arr[pos]) { cont++; if (arr[pos] == n) { return; } else { pos++; if (pos == arr.length) { pos = 0; } } } arr[pos] = n; } else { arr[pos] = n; } //空间不足的时候的扩建 if (cont == arr.length) { //d等呗扩建 var oldArr = arr; arr.length = oldArr.length * 2; arr = []; for (var i = 0; i <p>相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章! </p><p>推薦閱讀:</p><p><a href="http://www.php.cn/js-tutorial-398758.html" target="_blank">怎麼使用基於Vue的延遲載入外掛程式vue-view-lazy</a><br></p><p><a href="http://www.php.cn/js-tutorial-398755.html" target="_blank">怎麼使用jquery toggleClass ()屬性製作文章段落變更背景顏色</a><br></p>
以上是JS實作最簡單的查找、排序、去重演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。

如何在Quartz中提前發送任務通知在使用Quartz定時器進行任務調度時,任務的執行時間是由cron表達式設定的。現�...

在JavaScript中如何獲取原型鏈上函數的參數在JavaScript編程中,理解和操作原型鏈上的函數參數是常見且重要的任�...

在微信小程序web-view中使用Vue.js動態style位移失效的原因分析在使用Vue.js...

在Tampermonkey中如何對多個鏈接進行並發GET請求並依次判斷返回結果?在Tampermonkey腳本中,我們經常需要對多個鏈...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版
SublimeText3 Linux最新版

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版
中文版,非常好用

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。