快速排序是對氣泡排序的改進,它使用分治法的思想,每次迴圈根據指定的基準數,將其他元素分別放置其左右(公升序排序,大的放右小的放左),第二次迴圈,以基準數為中心,分為左右兩部分,每部分再通過新的基準數排序…
(不做具體舉例說明,直接分析時間複雜度然後貼上**)
排序n個專案要比較o(n log n)次比較
可惜的是,由於關鍵字的比較和交換是跳躍進行的, 因此,快速排序是一種不穩定的排序方法。
#include
using
namespace std;
void
quick_sort_recursive
(int arr,
int start,
int end)}if
( i == j)
quick_sort_recursive
(arr,start,i-1)
;quick_sort_recursive
(arr,i+
1,end);}
void
quick_sort
(int arr,
int len)
intmain()
;quick_sort
(nums,9)
;for
(int i=
0;i<
9;i++
) cout<<
" "
<; cout
}
排序演算法 快排
今天聊聊排序演算法,排序演算法平時也會用到,有很多比如,冒泡,快排,選擇,歸併排序等 今天就聊一聊快速排序演算法排序演算法的乙個宗旨就是經過一趟排序,何為一趟排序呢?就是遍歷完一次陣列,陣列中的一部分資料比另外一部分的資料都要小 當然這兩部分資料內部仍然是無序的,然後我們再對這兩部分資料分別進行排序...
排序演算法 快排,歸併
從陣列中隨機選乙個數,比這個數大的放右邊,比這個數小的放左邊。快排中的乙個細節 如果乙個數等於p的時候,既可以在左邊又可以在右邊。這麼做是為了避免如果陣列中所有的數都一樣,則會造成資料的不平衡。快排的目的是能夠使得左邊和右邊的數都差不多,這樣的話時間複雜度就不會退化到o n 2 而是o n logn...
排序演算法 歸併 快排
歸併排序的思想是分治法,如果想要將乙個陣列排序,那麼將這個陣列分為左區間和右區間,左區間一定是小於右區間的,再將左區間繼續劃分,右區間也繼續劃分。最後將排好序的陣列全都歸併起來,這樣聽起來像是從上向下劃分,其實歸併排序主要是是從下向上,合併的過程。先將單個元素的陣列歸併為兩個元素的有序陣列 再將包含...