C 快速排序

2021-08-22 15:15:54 字數 982 閱讀 7019

快速排序:把集合的第乙個元素進行標記(key),設定兩個移動標記,分別向後/向前移動,把比key大的資料放在key右邊,把比key小的資料放到key左邊

重複執行此方法,到所有元素排序完成

過程:1.j 向前移動,找到第乙個小於 key 的元素 -> array[i] array[j]互換

2. i 向後運動,找到第乙個大於key 的元素 ->array[i] array[j]元素互換

3.重複上面兩個過程直到i=j 結束

時間複雜度:o(n*log2n)  穩定性:不穩定  空間複雜度:o(log2n)~o(n)

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 快速排序

;sort(a, 0, a.length - 1);

for (int i = 0; i < a.length; i++)

", a[i]);}}

static void sort(int arr,int low,int high)

int first = low;

int last = high;

int key = arr[first];

while (first < last)

arr[first] = arr[last];

//最前游標向後移動

while (firstarr[last] = arr[first];

}//上面while退出:證明first 和last 重合

arr[first] = key;

//通過遞迴呼叫確定元素位置

sort(arr, low, first - 1);

sort(arr, first + 1, high);}}

}

排序 快速排序(C )

1 演算法描述 1.1 設當前參加排序的陣列為array 0.n 1 選擇乙個元素 通常稱該元素為基準元素 作為基準元素 將小於或者等於基準元素的所有元素都移到基準元素的左邊 把大於或者等於基準元素的所有元素都移到分界元素的右邊 執行完 2 3 步驟後,基準元素左邊元素序列,基準元素,基準元素右邊元...

排序 快速排序(C )

如果看不懂這些乾巴巴的理 字,那就先不用看了,下面 中有詳細的注釋,大家可以先跟著 走幾遍,回過頭來再看這些文字描述,總之 紙上得來終覺淺,絕知此事要躬行。排序演算法哪家強,從實際應用的角度上將,快排表現很好。很自然地,人們會覺得短陣列比長陣列更好處理,因此可能會想到將原始陣列分為若干各子部分然後分...

快速排序 c

快速排序應該是目前最快,也是最常用的一種排序演算法。它將乙個集合劃分成兩個子集合,然後繼續遞迴來完成最終排序。具體做法 1.選取集合最右端的元素作為乙個參照物,稱之為 樞紐 pivot 2.開始計算分割位置。在計算時,進行元素交換,確保左側元素都小於樞紐,而右側都大於樞紐。3.根據分割位置,分別遞迴...