原理:先找出當前陣列中最大
的那個放到最後
步驟: 比較相鄰的前後二個資料,如果前面資料大於後面的資料,就將二個 資料交換。
這樣對陣列的第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.第一輪的時候最後乙個元素應該...