對於陣列s = [2, 1, 3, 0, 4, 5, 8, 7, 1]進行排序最好的情況是val每一次取到中間值,則複雜度為nlog(n)
最壞的情況是val每一次取到最小值或者最大值,則複雜度為n^2
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 999999999
typedef
long
long ll;
using
namespace
std;
const
int max = 10000;
int len, arr[max];
void output(int *arr, int len)
cout
<< "\n------\n";
}void quicksort(int *arr, int st, int end)
arr[left] = val; // 最終剩下乙個位置用來填充val,則val左邊的比val小,val右邊的比val大
quicksort(arr, st, left - 1);
quicksort(arr, left + 1, end);
}int main()
quicksort(arr, 0, len -1);
output(arr, len);
}return
0;}
快速排序詳解
快速排序也是基於交換的原理進行的,是對氣泡排序的一種改進。即它是通過不斷比較和移動交換來實現排序的,只不過它的實現,增大了記錄的比較和移動的距離,將關鍵字比較大的記錄從前面直接移動到後面,關鍵字較小的記錄從後面直接移動到前面,從而減小了總的比較次數和移動次數。快速排序是找出乙個元素 理論上可以隨便找...
快速排序詳解
快速排序法詳解 快速排序法 quicksort 是一種非常快的對比排序方法。它也divide and conquer思想的實現之一。自從其產生以來,快速排序理論得到了極大的改進,然而在實際中卻十分難以程式設計出正確健壯的 本文將對快速排序演算法的基本理論和程式設計實踐方面做作乙個全面的講解。在本文講...
快速排序 詳解
注 如果下面不詳細,可以去這個連線看我記錄下的筆記 概念 快速排序其實是 二分 的應用。雖然類似於冒泡,但是它比冒泡的跳躍更大。樣例 int arr 10 第一步 確定arr 0 為基準數。第二步 先從最右邊 arr 9 開始讀取數字,讀到比基準數小的時候。再從基準數開始讀取。讀到比基準數大的時候,...