js基本排序演算法(遞增)

2021-10-01 07:22:37 字數 3443 閱讀 9370

原理:先找出當前陣列中最大的那個放到最後

步驟: 比較相鄰的前後二個資料,如果前面資料大於後面的資料,就將二個 資料交換。

這樣對陣列的第0個資料到n-1個資料進行一次遍歷後,最大的乙個資料就「沉」到陣列第n-1個位置。

n=n-1,如果n不為0就重複前面二步,否則排序完成。

function

bubblesort

(arr)}}

return arr;

} console.

log(

bubblesort([

6,1,

2,4,

3,5]

))//1,2,3,4,5,6

原理:每次迴圈選出最小的放在前面

步驟:在乙個長度為n的無序陣列中,在第一趟遍歷n個資料,找出其中最小的數值與第乙個元素交換,第二趟遍歷剩下的n-1個資料,找出其中最小的數值與第二個元素交換……第n-1趟遍歷剩下的2個資料,找出其中最小的數值與第n-1個元素交換,至此選擇排序完成。

function

selectsort

(arr)

} temp = arr[i]

; arr[i]

= arr[min]

; arr[min]

= temp;

}return arr;

} console.

log(

selectsort([

6,1,

2,4,

3,5]

))//1,2,3,4,5,6

原理:就是一開始選擇當前陣列的中中間,比中間的數的大的放到右邊的陣列,比它小的放到左邊,不斷遞迴,直到當前只有乙個數

步驟:1.先從數列中取出乙個數作為基準數。

2.分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。

3.再對左右區間重複第二步,直到各區間只有乙個數。

function

quicksort

(arr)

var left =

, right =

, mid = arr.

splice

(math.

floor

(arr.length /2)

,1);

for(

var i =

0; i < arr.length; i++

)else

}return

quicksort

(left)

.concat

(mid,

quicksort

(right))}

console.

log(

quicksort([

6,1,

2,4,

3,5]

))//1,2,3,4,5,6

原理:

選擇乙個數與這個數前面的數就行比較,開始時選擇序號為1的,以後迴圈依次往後選

然後將選擇的數與前面的數進行比較,比前面的數小,就交換兩者位置

繼續向前找,直到找到第乙個比選擇的數小的,就把選擇的這個數放到那個較小數的後一位,然後依次類推的進行1,2,3的步驟

function

insertsort

(arr)

arr[j +1]

= key;

}return arr;

} console.

log(

insertsort([

1,2,

5,19,

3]))

//1,2,3,5,19

// 1.如果呼叫該方法時沒有使用引數,使用ascii碼進行對比

var arr =

['general'

,'tom'

,'tam'

,'john'

,'army'];

var resarr = arr.

sort()

; console.

log(resarr)

;//輸出 ["army", "general", "john", "tam", "tom"]

var arr2 =[30

,10,111,35

,1899,50

,45];

var resarr2 = arr2.

sort()

; console.

log(resarr2)

;//輸出 [10, 111, 1899, 30, 35, 45, 50]

// 如果想按照其他規則進行排序,就需要提供比較函式,該函式要比較兩個值

// 2.a-b 公升序

var arr3 =[30

,10,111,35

,1899,50

,45];

arr3.

sort

(function

(a,b)

) console.

log(arr3)

;//輸出 [10, 30, 35, 45, 50, 111, 1899]

// 3.b-a 降序

var arr4 =[30

,10,111,35

,1899,50

,45];

arr4.

sort

(function

(a,b)

) console.

log(arr4)

;//輸出 [1899, 111, 50, 45, 35, 30, 10]

// 4.根據陣列中的物件的某個屬性值排序

var arr5 =[,

,,,,

];arr5.

sort

(function

(a,b)

) console.

log(arr5)

;//輸出新的排序

//

//

//

//

//

//

// 4.根據陣列中的物件的多個屬性值排序,多條件排序;

var arr6 =[,

,,,,

];arr6.

sort

(function

(a,b)

else})

console.

log(arr6)

;//輸出新的排序

//

//

//

//

//

//

js版基本排序演算法

在每一輪資料比較中,在每一次兩者資料比較中,當前者值大於後者 後者值大於前者 需要進行公升序 降序 排列時,將其兩者數值進行調換,每一輪中可能有n次數值交換,總共可能需要進行 n 1 輪,其中o n 2 氣泡排序是一種嚴格的穩定排序演算法,它不改變序列中相同元素之間的相對位置關係。譬如對陣列中儲存的...

演算法 連續遞增陣列隨機排序

給定幾個連續的整數集合,如何通過乙個係數 進行處理,使此集合隨機生成排序?希望這裡的數,通過某個變數處理後 能隨機變成 之類的 public void testmethod console.writeline calc date,weeknum public int calc datetime da...

JS基本演算法

知識擴充 時間複雜度 演算法的時間複雜度是乙個函式,描述了演算法的執行時間。時間複雜度越低,效率越高。自我理解 乙個演算法,執行了幾次時間複雜度就為多少,如執行了n次,則時間複雜度為o n 1.氣泡排序 解析 1 比較相鄰的兩個元素,如果前乙個比後乙個大,則交換位置。2.第一輪的時候最後乙個元素應該...