js陣列詳解(四) 排序API

2021-09-24 10:27:51 字數 1318 閱讀 4559

1. 排序:

自定義排序: 冒泡

排序api:arr.sort();

大問題: 預設將所有元素轉為字串再按字串排列

只能對字串型別的元素正確排序

解決: 自定義比較規則: 

比較器函式: 專門比較任意兩值大小的函式: 

要求: 兩個引數: a,b

返回值: 如果a>b,就返回正數

如果a降序: 顛倒比較器函式的正負號,可改公升序為降序

最簡單的數字降序比較器函式: 

function compare(a,b)

2. 棧和佇列:js中沒有專門的棧和佇列型別

一切棧和佇列都是用普通陣列模擬的

棧: 一端封閉,只能從另一端進出的陣列

特點: filo

何時: 今後只要希望始終使用最新的元素時

如何: 

1. 從結尾出入棧:

入: arr.push(值) => arr[arr.length]=值

出: var last=arr.pop()

特點: 每次出入棧,都不影響其他元素的位置

2. 從開頭出入棧:

入: arr.unshift(值)

出: var first=arr.shift()

特點: 每次出入棧,其它元素位置都會依次順移

佇列: 只能從一端進入,從另一端出的陣列

特點: fifo

何時: 只要希望按先後順序使用陣列中的元素時

1. 結尾入: 入: arr.push(值)

2. 開頭出: var first=arr.shift()

3. 二維陣列: 

什麼是: 陣列中的元素又引用了另乙個子陣列

何時: 1. 儲存橫行豎列的二維資料結構

2. 對一組資料,再進行細緻分類時

如何: 

建立: 2種:

1. 建立陣列時,還不知道子陣列的內容: 

var arr=;

arr[0]=[值1,值2,...]; 

arr[1]=[值1,值2,...];

2. 建立陣列同時初始化元素:

var arr=[

[值1,值2,...],

[值1,值2,...],

...]

訪問: arr[r][c]->用法和普通陣列元素的用法完全一樣

強調: 二維陣列,行下標r不能越界!——報錯!

遍歷: 外層迴圈控制行,內層迴圈控制列

for(var r=0; r}

四 排序演算法

1.快速排序 procedure qsort l,r integer var i,j,mid integer begin i l j r mid a l r div 2 repeat while a i mid do dec j if i j then begin swap a i a j inc ...

php四排序 選擇排序

原理 在一列數字中,選出最小數與第乙個位置的數交換。然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後乙個數比較為止。以下都是公升序排列,即從小到大排列 舉例說明 arr array 6,3,8,2,9,1 第一輪 第一次比較,第乙個數 6 與 3,8,2,9,1 中 3...

php四排序 氣泡排序

演算法和資料結構是乙個程式設計工作人員的內功,技術牛不牛,一般都會看這兩點。作為php程式設計師,提公升技能當然也得學習演算法。下面介紹四種入門級排序演算法 氣泡排序 選擇排序 插入排序 快速排序。一 氣泡排序 原理 對一組資料,比較相鄰資料的大小,將值小資料在前面,值大的資料放在後面。以下都是公升...