js演算法中的排序、陣列去重詳細概述_javascript技巧
其實在js實現數組排序,採用數組中sort方法實作還是比較簡單的:
一、排序
簡單實作陣列排序
var arr = [] ;
for(var i=0;i arr.push(Math.floor(Math.random()*100))
}
arr.sort(function (a,b){
return a>b?1:-1;
})
alert(arr)
無法簡單使用sort方法,預設情況下sort方法是按ascii字母順序排序的,而非我們認為是按數字大小排序,
sort() 方法可以接受一個 方法為參數 ,這個方法有兩個參數。分別代表每次排序比較時的兩個陣列項。 sort()排序時每次比較兩個陣列項目都回執行這個參數,並且把兩個比較的陣列
項作為參數傳遞給這個函數。當函數傳回值為1的時候就交換兩個數組項的順序,否則就不交換。
演算法的陣列排序
var arr = [] ;
for(var i=0;i arr.push(Math.floor(Math.random()*100))
}
//生成一個無序的arr陣列
function sort(arr,start,end){
//陣列長度為1
if(start == end ){
if(start }else if(start == end-1){
//陣列長度為2,依數值大小排序
end],arr[start]]
}else{
return [arr[start] > // 陣列長度一半
var l = 數學。 arr,l 1,end);
//回傳結果
var result = [];
//分割成兩部分左右兩個陣列只比對數組中的第一個數,那個數值小就把誰放到結果裡面,並把小的數值刪除掉,固採用數組中的shift方法。一旦出現左邊數組或右邊數組,沒有資料的時候
//result數組就與還有資料的數組合併採用concat,並返回結果
while(arrLeft.length>0 || arrRight.length>0 ){
if(arrLeft.length==0){
🎜> }else if(arrRight.length==0){
result = result.concat(arrLeft);
break;
} result.push(arrLeft.shift())
}else{
result.push(arrRight.shift());
🎜>var arrSort = sort(arr,0,arr.length -1);//參數數組,開始位置,結束位置
document.write(arr '
' arrSort);
講解:數組排序主要是採用將數組一拆為二,直到不能為之,最後只能是拆掉數組裡面只能是一個或者是兩個,因為數組的長度有奇數偶數之分,拆到最後數組裡面只有一個或兩個之後開始排序並傳回結果,並將這些結果在一一比對進行合併。這個方法可能大家覺得為什麼要這麼複雜,一直採用第一種不行嗎,其實當然可以啦,但是這個世界上還有性能這個詞彙,當數據之後幾個幾十個幾個百,大家的算出的結果時間是沒有什麼差別的,如果當資料龐大的幾億幾十億我們還有這種自信用第一種方法嗎,其實js的演算法就是分而治之,將很多問題分成小的來解決。
二、陣列去掉重複
簡單方法去掉重複:先宣告一個空的數組,將重複的數組for 循環插入,重複的跳過不重複的插入
var arr = [];
for(var i=0;i arr.i arr.push(parseInt. (Math.random()*10));
}
Array.prototype.indexOf = function(n){
for(var i=0;i
return i;
🎜>}
function removeDup(arr){
var result = [];
for(var i=0;i
}
}
return result;
}
var arr2 = removeDup(arr)
document.write(arr '
' arr2)
演算法陣列去掉重複
複製程式碼
Array.prototype.indexOf = function(n){
}
}
🎜> if(s==e){
//分割剩下一個
return [arr[s]]
}else if(s==e-1){
(arr[s]==arr[e]){
return [arr[s]]
}
}
//陣列平分成兩段,
var l = Math.floor((s e)/2);
l);
//右邊
var arrR = removeDup(arr,l 1,e);
//結果先將左邊的複製進去 for(var i=0;i
}
return result; //回傳結果
}
var arrDup = removeDup(arr, 0, arr
var arrDup = removeDup(arr, 0, arr. (arr '
' arrDup);
講解:將重複的數組切割,拆分到最後只剩下一個資料或或兩個數組,將左邊的資料放到結果裡面,右邊重複的跳過不重複插入,直到循環完,回傳結果可以

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

本文將介紹如何在Windows11/10中根據拍攝日期對圖片進行排序,同時探討如果Windows未按日期排序圖片應該如何處理。在Windows系統中,合理整理照片對於方便尋找影像檔案至關重要。使用者可以根據不同的排序方式(如日期、大小和名稱)來管理包含照片的資料夾。此外,還可以根據需要設定升序或降序排列,以便更靈活地組織文件。如何在Windows11/10中按拍攝日期對照片進行排序要按在Windows中拍攝的日期對照片進行排序,請執行以下步驟:打開圖片、桌面或放置照片的任何資料夾在功能區選單中,單

Outlook提供了許多設定和功能,可協助您更有效地管理工作。其中之一是排序選項,可讓您根據需要對電子郵件進行分類。在這個教學中,我們將學習如何利用Outlook的排序功能,根據寄件者、主題、日期、類別或大小等條件對電子郵件進行整理。這將讓您更輕鬆地處理和查找重要訊息,提高工作效率。 MicrosoftOutlook是一個功能強大的應用程序,可以輕鬆地集中管理您的電子郵件和日曆安排。您可以輕鬆地發送、接收和組織電子郵件,而內建的日曆功能也讓您能夠輕鬆追蹤您即將面臨的活動和約會。如何在Outloo

PHP開發:如何實現表格資料排序和分頁功能在進行Web開發中,處理大量資料是一項常見的任務。對於需要展示大量資料的表格,通常需要實現資料排序和分頁功能,以提供良好的使用者體驗和最佳化系統效能。本文將介紹如何使用PHP實作表格資料的排序和分頁功能,並給出具體的程式碼範例。排序功能實作在表格中實作排序功能,可以讓使用者根據不同的欄位進行升序或降序排序。以下是一個實作表格

使用Python實現XML資料的篩選和排序引言:XML是一種常用的資料交換格式,它以標籤和屬性的形式儲存資料。在處理XML資料時,我們經常需要對資料進行篩選和排序。 Python提供了許多有用的工具和函式庫來處理XML數據,本文將介紹如何使用Python實現XML資料的篩選和排序。讀取XML檔案在開始之前,我們需要先讀取XML檔案。 Python有許多XML處理函式庫,

在這個問題中,一個字串被當作輸入,我們必須按字典順序對字串中出現的單字進行排序。為此,我們為字串中的每個單字(之間用空格區分)分配一個從1開始的索引,並以排序索引的形式獲得輸出。 String={“Hello”,“World”}“Hello”=1“World”=2由於輸入字串中的單字已按字典順序排列,因此輸出將列印為“12”。讓我們看看一些輸入/結果場景-假設輸入字串中的所有單字都相同,讓我們看看結果-Input:{“hello”,“hello”,“hello”}Result:3獲得的結

PHP的array_unique()函數用來移除陣列中重複元素,其預設使用嚴格相等(===)。我們可以透過自定比較函數來指定去重依據:建立自定比較函數,指定去重的標準(例如根據元素長度);將自訂比較函數作為第三個參數傳遞給array_unique()函數,即可根據指定的標準移除重複元素。

Java中的Arrays.sort()方法如何依照自訂比較器對陣列進行排序?在Java中,Arrays.sort()方法是一個非常有用的方法,可以對陣列進行排序。預設情況下,方法會依照升序排序。但是有時候,我們需要依照自己定義的規則來對陣列進行排序。這時,就需要用到自訂比較器(Comparator)。自訂比較器是一個實作了Comparator介面的類,

在我們的工作中,常常會用到wps軟體,wps軟體處理資料的方式方法是非常多的,而且函數功能也是非常強大的,我們常用函數來求平均值,求總和等,可以說只要是統計數據能用的方法,wps軟體庫裡都已經為大家準備好了,下面我們要介紹的是wps怎麼排序成績高低的操作步驟,看完以後大家可以藉鑑經驗。 1.先開啟需要排名的表格。如下圖所示。 2、然後輸入公式=rank(B2,B2:B5,0),一定要輸入0。如下圖所示。 3、輸入完公式以後,按下電腦鍵盤上的F4鍵,這一步驟操作是為了讓相對引用變成絕對引用。
