js 陣列排序

2021-10-07 10:13:55 字數 4458 閱讀 3351

目錄前言

一、陣列排序方式

1、使用 sort() 和 reverse() 方法對陣列排序

2、選擇排序

3、氣泡排序

二、排序題

1、將根據排序函式比較陣列中每個元素的大小排序

(1)、從小到大排序

(2)、從大到小排序

2、根據奇偶性質排列陣列

3、不區分大小寫排序字串

4、把浮點數和整數分開顯示

排序都是根據 ascii 碼排的,關於 ascii 請戳這裡:

var a = [1,"c",3,"d",6,0];

a.sort();

console.log(a); // [0, 1, 3, 6, "c", "d"]

如果想按照從大到小的順序排序,可以在用 sort() 方法之後,接著用一下 reverse() 方法:

var a = [1,"c",3,"d",6,0];

a.sort().reverse();

console.log(a); // ["d", "c", 6, 3, 1, 0]

每一輪比較時,會用陣列中的乙個基準值和後面的數依次做比較,如果基準值大於後面某個數,就交換每一輪比較後得到最小值。

function fn(arr)}}

return arr;

}var arr = [1,3,6,4,2,5];

console.log(fn(arr)); // [1, 2, 3, 4, 5, 6]

計算過程:

arr = [1,3,2,6,5,4]        length=arr.length = 6

i(ij(j=i+1 && j比較

結果描述

i<5

0j<6

11<3

[1,3,2,6,5,4]

j迴圈體,第一次迴圈結束,確定最小值 1。

繼續序列化。

21<2

[1,3,2,6,5,4]

31<6

[1,3,2,6,5,4]

41<5

[1,3,2,6,5,4]

51<4

[1,3,2,6,5,4]

1j<6

23>2

[1,2,3,6,5,4]

j迴圈體,第二次迴圈結束,確定第二小的值 2。

繼續序列化。

32<6

[1,2,3,6,5,4]

42<5

[1,2,3,6,5,4]

52<4

[1,2,3,6,5,4]

2j<6

33<6

[1,2,3,6,5,4]

j迴圈體,第二次迴圈結束,確定第三小的值 3。

繼續序列化。

43<5

[1,2,3,6,5,4]

53<4

[1,2,3,6,5,4]

3j<6

46>5

[1,2,3,5,6,4]

j迴圈體,第二次迴圈結束,確定第四小的值 4。

繼續序列化。

55>4

[1,2,3,4,6,5]

4j<6

56>5

[1,2,3,4,5,6]

j迴圈體,第二次迴圈結束,確定第五小的值 5。

序列化完成。

兩個迴圈體都結束。

每相鄰兩個元素大小作比較,不合適,則交換。

function fn(arr)}}

return arr;

}var arr = [1,3,2,6,5,4];

console.log(fn(arr)); // [1, 2, 3, 4, 5, 6]

計算過程:

arr = [1,3,2,6,5,4]        length=arr.length = 6

i(ij(j比較

結果描述

i<5

0j<5

01<3

[1,3,2,6,5,4]

j迴圈體,第一次迴圈結束後

鎖定了最大值 6。

繼續序列化。

13>2

[1,2,3,6,5,4]

23<6

[1,2,3,6,5,4]

36>5

[1,2,3,5,6,4]

46>4

[1,2,3,5,4,6]

1j<4

01<2

[1,2,3,5,4,6]

j迴圈體,第二次迴圈結束後鎖定了第二大的值 5。

序列化完成。

迴圈還在繼續。

12<3

[1,2,3,5,4,6]

23<5

[1,2,3,5,4,6]

35>4

[1,2,3,4,5,6]..

....

....

....

.直至迴圈結束。

function f(a,b) 

var a = [3,1,2,4,5,7,6,8,0,9];

a.sort(f);

console.log(a); // [0,1,2,3,4,5,6,4,7,8,9]

function f(a,b) 

var a = [3,1,2,4,5,7,6,8,0,9];

a.sort(f);

console.log(a); // [9,8,7,6,5,4,3,2,1,0]

function f(a, b) 

var a = [3,1,2,4,5,7,6,8,0,9];

a.sort(f); //根據數字大小由大到小進行排序

console.log(a); // [3,1,5,7,9,0,8,6,4,2]

在正常情況下,對字串進行排序是區分大小寫的,這是因為每個大寫字母和小寫字母在字元編碼表中的順序是不同的,大寫字母大於小寫字母。

var a = ["ab", "ab", "ba", "ba"];

a.sort();

console.log(a); // ["ab", "ba", "ab", "ba"]

大寫字母總是排在左側,如果讓小寫字母總是排在左側,可以設計:

function f(a,b) 

var a = ["ab", "ab", "ba", "ba"];

a.sort();

console.log(a); // ["ab", "ba", "ab", "ba"]

如果不區分大小寫,大寫字母和小寫字母按相同順序排列,可以設計:

function f(a, b) 

else

}var a = ["ab", "ab", "ba", "ba"];

a.sort();

console.log(a); // ["ab", "ab", "ba", "ba"]

function f(a, b) 

var a = [3.5555, 1.23456, 3, 2.11111, 5, 7, 3];

a.sort(f);

console.log(a); // [3,5,7,3,2.11111,1.23456,3.55555]

JS陣列排序

function bubblesort array return array vararray1 2,5,1,9 bubblesort array1 1,2,5,9 function usesort array var array1 2,5,1,9 usesort array1 在資料集中,選擇乙個...

js 陣列排序

var array 1,4,8,3,6,12,9,8 function compare val1,val2 array.sort compare document.write array sort 方法按照公升序排列陣列項,會呼叫每個陣列項的tostring 轉型方法,然後比較得到的字串。tostr...

JS陣列排序

用陣列的排序 sort 方法.但sort 方法本身是按ascii字元 從小到大排列的.所以說,如果是數字的話,會出現下面這種情況 var arr 3,32,3,5 arr.sort alert arr.tostring 輸出 2,3,32,5 但是 sort 方法可以接收乙個引數,就是乙個比較函式 ...