array sort - 2 : quick sort
遞歸實現:
#include <stdio.h>
int arr[10] = {3, 2, 4, 1, 9, 7, 5, 6, 0, 8};
void print_array()
{
??? int i = 0;
??? for (i = 0; i < 10; i++)
??????? printf("arr[%d]:%d? ", i, arr[i]);
??? printf("\n");
}
void swap(int *i, int *j)
{
??? int temp = *i;
??? *i = *j;
??? *j = temp;
}
void quick_sort(int left, int right)
{
??? if (left >= right)
??????? return;
??? int i = left;
??? int j = right;
??? while (i < j) {
??????? while (arr[j] >= arr[left] && j > i) {
??????????? j--;
??????? }
??????? while (arr[i] <= arr[left] && i < j) {
??????????? i++;
??????? }
??????? if (i != j) {
??????????? swap(&arr[i], &arr[j]);
??????? print_array();
??????? }
??? }
??????? swap(&arr[left], &arr[i]);
??????? print_array();
??????? quick_sort(left, i-1);
??????? quick_sort(i+1, right);
}
int main(int argc, char **argv)
{
??? int left = 0;
??? int right = 9;
??? print_array();
??? quick_sort(left, right);
??? print_array();
}
非遞歸實現:
?
轉載于:https://www.cnblogs.com/roadmap99/p/6698807.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的array sort - 2 : quick sort的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Source Insight 常用设置和
- 下一篇: C++ STL 优先队列