知識總結 氣泡排序和快速排序

2021-10-07 12:57:14 字數 1255 閱讀 1843

思路1:a) 比較兩個相鄰的元素,如果後乙個比前乙個大,則交換位置

b) 第一輪的時候最後乙個元素應該是最大的乙個

c) 按照第一步的方法進行兩個相鄰的元素的比較,由於最後乙個元素已經是最大的了,所以最後乙個元素不用比較

// 氣泡排序1

function sortarr1(arr) }}

return arr

}console.log(sortarr1([7, 3, 4, 8, 9, 6, 4, 1]))

console.log(sortarr1([3, 5, 1, 2, 7, 8, 4, 5, 3, 4]))

思路2:a) 比較兩個相鄰的元素,如果後乙個比前乙個大,則交換位置

b) 第一輪的時候第乙個是最小的

// 氣泡排序2 把小的元素往前調,大的往後調

function sortarr(arr) }}

return arr

}console.log(sortarr([7, 3, 4, 8, 9, 6, 4, 1]))

console.log(sortarr([3, 5, 1, 2, 7, 8, 4, 5, 3, 4]))

氣泡排序在實際的工作中如果資料量過大,陣列比較複雜,通過兩次遍歷,同時會帶來效能上的問題。

因此可以用快速排序的方法進行解決,快速排序對氣泡排序的一種改進。

思路:a) 獲取陣列的中位數作為對比值,並將該值從原陣列中剔除。

b) 迴圈比較,第一次排序的時候將原陣列元素分為兩個部分。

若陣列元素比該對比值大,則儲存在大的部分,否則儲存在小的部分

c) 然後遞迴呼叫,在兩邊都實行快速排序。

// 快速排序法

function softsortarr(arr)

let index = math.floor(arr.length / 2)

let temp = arr.splice(index, 1)[0]

for (let i = 0; i < arr.length; i++) else

}return softsortarr(leftarr).concat([temp], softsortarr(rightarr))

}console.log(softsortarr([7, 3, 4, 8, 9, 6, 4, 1]))

console.log(softsortarr([3, 5, 1, 2, 7, 8, 4, 5, 3, 4]))

排序 氣泡排序和快速排序

實現思路 把第乙個元素作為標記,依次判斷後續的值,如果小於它則放在左邊,如果大於它則放右邊,同理把左右兩部分看成乙個整體一直遞迴,最後再陣列拼接起來 它的最優時間複雜度為o nlogn 以標記元素為中心,正好每次左右都能均勻分配 最糟糕時間複雜度為o n 2 標記元素每次是最大或最小值,使所有數都劃...

氣泡排序和快速排序

來自 氣泡排序1 自創的,不知道它叫什麼排序,和冒泡差不多。public void risepot ref int array 氣泡排序2 public void risepot ref int array 快速排序 public void quicksort ref int arr,int low...

氣泡排序和快速排序

pragma mark pragma mark 氣泡排序 選擇排序 void swap int a,int b void bubblesort int a,int length 簡單優化,對於已經有序的序列,省去接下的迴圈。對於這種優化,實際還需考慮,多了賦值和判斷操作。if temp length...