排序 快速排序

2022-09-19 23:54:15 字數 761 閱讀 5982

原理:快速排序需要選擇乙個元素作為key,然後以key為基準,比key小的放在左邊,比key大的放在右邊,這是一次過程。一次劃分為兩個區間,左右區間再用同樣的方法進行排序,當最小區間排序完成,則快速排序完成,可返回結果。

key元素選擇:每次選擇末尾元素作為當前區間的key。

源**:使用者先錄入設定大小個數的元素,元素在一行用空格分隔,然後進行排序,在一行輸出結果,元素用空格分隔,可迴圈實現。

#include

#include

#include

int part_sort(int *array, int left, int right)

array[left] = key;

return left;

}void quicksort(int *array, int left, int right)

int temp_right = 0;

temp_right = part_sort(array, left, right);

quicksort(array, temp_right + 1, right);

quicksort(array, left, temp_right - 1);

}int main()

}quicksort(array, 0, i);

printf("快排後的結果為:");

for(int j = 0; j < num; j++)

system("pause");

}return 0;

}

排序 快速排序

快速排序時實踐中最快的一直排序,平均時間是0 nlogn 最壞的情況是o n2 但是很容易將這種情況避免 空間複雜度 o n lgn 不穩定。快速排序時基於分治模式處理的,對乙個典型子陣列a p.r 排序的分治過程為三個步驟 1.分解 a p.r 被劃分為倆個 可能空 的子陣列a p q 1 和a ...

排序 快速排序

定義 在快速排序演算法中,使用了分治策略,將要排序的序列分成兩個子串行,然後遞迴地對子序列進行排序,直到整個序列排序完畢。步驟 1.在序列中選擇乙個關鍵元素作為軸 2.對序列進行重新排序,將比軸小的元素移到軸的前邊,比軸大的元素移動到軸的後面。在進行劃分之後,軸便在它最終的位置上 3.遞迴地對兩個子...

排序 快速排序

時間複雜度 快速排序每次將待排序陣列分為兩個部分 1 在理想狀況下,每一次都將待排序陣列劃分成等長兩個部分,則需要logn次劃分。2 在最壞情況下,即陣列已經有序或大致有序的情況下,每次劃分只能減少乙個元素,快速排序將不幸退化為氣泡排序,最壞情況為o n 2 快速排序的平均時間複雜度為o nlogn...