js的陣列排序方法

2021-10-07 15:00:23 字數 4158 閱讀 6631

var array =[1

,4,-

8,-3

,6,12

,9,8

];function

compare

(val1,val2)

;array.

sort

(compare)

;document.

write

(array)

;

sort()方法按照公升序排列陣列項,會呼叫每個陣列項的tostring()轉型方法,然後比較得到的字串。

tostring()方法是把布林值或booleanobject轉換為字串,並返回結果。

compare()函式方法是乙個比較函式,作為sort()方法的引數。

var array =[1

,4,-

8,-3

,6,12

,9,8

];function

sort

(arr)}}

}sort

(array)

;document.

write

(array)

;

(1)比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個位置。

(2)對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

(3)針對所有的元素重複以上的步驟,除了最後乙個。 (4)持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

var array =[1

,4,-

8,-3

,6,12

,9,8

];function

quicksort

(arr)

//定義中間值的索引

var index = math.

floor

(arr.length/2)

;//取到中間值

var temp = arr.

splice

(index,1)

;//定義左右部分陣列

var left =

;var right =

;for

(var i=

0;i)else

}return

quicksort

(left)

.concat

(temp,

quicksort

(right));

}document.

write

(quicksort

(array)

);

math.floor(x)方法是向下取整,返回小於或等於x的最接近的整數。

splice(index,num,item)方法是向陣列中新增專案,或是從陣列中刪除專案,並返回被刪除的專案。

(1)index是整數,被操作專案所在的位置(必須)

(2)num是整數,要刪除的專案的數量,如果為0,表示不刪除(必須)

(3)item是向陣列中新增的新專案,可以是多個(可選) push()方法是向陣列末尾新增乙個或多個新專案並返回新陣列的長度

concat()方法連線兩個或多個陣列,不會改變原有陣列,返回乙個新陣列

var array =[1

,4,-

8,-3

,6,12

,9,8

];function

insertsort

(arr)

;//插入

arr[j+1]

= temp;}}

}insertsort

(array)

document.

write

(array)

;

(1)從第乙個元素開始,該元素可以認為已經被排序

(2)取出下乙個元素,在已經排序的元素序列中掃瞄

(3)如果該元素(已排序)大於新元素,將該元素移到下一位置

(4)重複步驟3,直到找到已排序的元素小於或者等於新元素的位置

(5)將新元素插入到下一位置中 (6)重複步驟2

var array =[1

,4,-

8,-3

,6,12

,9,8

];function

selectsort

(arr)

}//將最小值插入,並將原來位置的最小值刪除

arr.

splice

(i,0

,min)

; arr.

splice

(minindex+1,

1);}

}selectsort

(array)

;document.

write

(array)

;

(1)在未排序序列中找到最小(大)元素 (2)並存放到排序序列的起始位置

(3)然後,再從剩餘未排序元素中繼續尋找最小(大)元素

(4)然後放到已排序序列的末尾。 (5)以此類推

function

order

(arr)

} mid=arr[i]

;// 將陣列最後乙個元素的值賦給中間變數;

arr[num]

=mid;

// 將中間變數賦給最大值的元素;

arr[i]

=max;

// 將最大值賦給陣列最後乙個元素;

}return arr;

}

1.獲取陣列中最大的元素
var arr=[1

,2,4

,6,3

,7,5

];var max=0;

for(

var i=

0;i)}

2.把最大值放到陣列最後:

*定義乙個中間變數來交換最大值和最後乙個元素的值;

*定義乙個變數來儲存最大值所在的位置;

var arr=[1

,2,4

,6,3

,7,5

];var len=arr.length;

var max=0;

var num=0;

var mid=0;

for(

var i=

0;imid=arr[len-1]

;// 將陣列最後乙個元素的值賦給中間變數;

arr[num]

=mid;

// 將中間變數賦給最大值的元素;

arr[len-1]

=max;

// 將最大值賦給陣列最後乙個元素;

// [1,2,4,6,3,5,7];

3.使用第二重迴圈來執行第2步:
var arr=[1

,2,4

,6,3

,7,5

];var len=arr.length;

var max=0;

var num=0;

var mid=0;

for(

var i=len-

1;i>

0;i--)}

mid=arr[li]

; arr[num]

=mid;

arr[i]

=max;

4.把第3步封裝在函式中:
function

order

(arr)

} mid=arr[i]

;// 將陣列最後乙個元素的值賦給中間變數;

arr[num]

=mid;

// 將中間變數賦給最大值的元素;

arr[i]

=max;

// 將最大值賦給陣列最後乙個元素;

}return arr;

}

數字排序為公升序排列!

這種方法會改變原始陣列!

js陣列排序的幾種方法

sort 陣列物件排序 其原理是氣泡排序,即比較相鄰的元素,如果第乙個比第二個大,就交換他們兩個。var arr console.log arr console.log arr 0 var compare function obj1,obj2 else if val1 val2 else conso...

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陣列排序

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 在資料集中,選擇乙個...