快速排序演算法(C語言實現)
先看一下快速排序演算法(C語言實現 )
#include <stdio.h>
void quicksort(int array[], int min, int max);
int partition(int array[], int min, int max)
{
int p; p = array[min];
//int len = max;
while (min < max)
{
while (array[max] >= p && min < max)
{
max--;
}
array[min] = array[max];
while (array[min] <= p && min < max)
{
min++;
}
array[max] = array[min];
}
array[min] = p;
//printf("分界:%d\n", min);
return min;
}
void quicksort(int array[], int min, int max, int n)
{
int p;
p = partition(array, min, max);
//printf("p = %d\n", p);
printf("執行結果:");
for (int i = 0; i <= 11; i++)
{
printf("%d ", array[i]);
}
printf("\n");
if (min < max)
{
printf("第%d次前序遞迴執行:", n);
printf("quicksort(array, %d, %d)\n", min, p - 1);
quicksort(array, min, p - 1, n); n++;
//partition(array, p+1 , max);
printf("第%d次後序遞迴執行:", n);
printf("quicksort(array, %d, %d)\n", p + 1, max);
quicksort(array, p + 1, max, n);
}
}
int main()
{
int arr[] = { 5, 9, 2, 7, 8, 3,1,4, 11, -10, 10, 0 };
//printf("%d\n", sizeof(arr) / sizeof(arr[0]));
int min = 0;
int max = sizeof(arr) / sizeof(arr[0]) - 1;
//int p = partition(arr, min, max);
//printf("min的值為:%d\n", min);
//partition(arr, min, p);
printf("進入遞迴之前執行:");
printf("quicksort(array, %d, %d)\n", 0, 11);
quicksort(arr, min, max, 1);
return 0;
}
列印結果:
進入遞迴之前執行:quicksort(array, 0, 11)執行結果:0 -10 2 4 1 3 5 8 11 7 10 9第1次前序遞迴執行:quicksort(array, 0, 5)執行結果:-10 0 2 4 1 3 5 8 11 7 10 9第1次前序遞迴執行:quicksort(array, 0, 0)執行結果:-10 0 2 4 1 3 5 8 11 7 10 9第2次後序遞迴執行:quicksort(array, 2, 5)執行結果:-10 0 1 2 4 3 5 8 11 7 10 9第2次前序遞迴執行:quicksort(array, 2, 2)執行結果:-10 0 1 2 4 3 5 8 11 7 10 9第3次後序遞迴執行:quicksort(array, 4, 5)執行結果:-10 0 1 2 3 4 5 8 11 7 10 9第3次前序遞迴執行:quicksort(array, 4, 4)執行結果:-10 0 1 2 3 4 5 8 11 7 10 9第4次後序遞迴執行:quicksort(array, 6, 5)執行結果:-10 0 1 2 3 4 5 8 11 7 10 9第2次後序遞迴執行:quicksort(array, 7, 11)執行結果:-10 0 1 2 3 4 5 7 8 11 10 9第2次前序遞迴執行:quicksort(array, 7, 7)執行結果:-10 0 1 2 3 4 5 7 8 11 10 9第3次後序遞迴執行:quicksort(array, 9, 11)執行結果:-10 0 1 2 3 4 5 7 8 9 10 11第3次前序遞迴執行:quicksort(array, 9, 10)執行結果:-10 0 1 2 3 4 5 7 8 9 10 11第3次前序遞迴執行:quicksort(array, 9, 8)執行結果:-10 0 1 2 3 4 5 7 8 9 10 11第4次後序遞迴執行:quicksort(array, 10, 10)執行結果:-10 0 1 2 3 4 5 7 8 9 10 11第4次後序遞迴執行:quicksort(array, 12, 11)執行結果:-10 0 1 2 3 4 5 7 8 9 10 11
由遞迴的順序:
1 執行quicksort(arr, 0, 9,0) 執行到quicksort(array, min, p-1,n) 函式會回到開始的位置;執行quicksort(array, 0, 5);
2,再重複1 quicksort(array, 0, 0) 此時第一
2 執行
相關文章
- 排序演算法-C語言實現排序演算法C語言
- C語言實現九大排序演算法C語言排序演算法
- 三種語言實現快速排序(C++/Python/Java)排序C++PythonJava
- 經典排序演算法的 C語言 | Java 實現排序演算法C語言Java
- 【C語言】氣泡排序與快速排序C語言排序
- 快速排序演算法C++實現排序演算法C++
- 資料結構之---C語言實現快速排序(多個版本)資料結構C語言排序
- C語言版資料結構及演算法_快速排序C語言資料結構演算法排序
- c語言快速排序(庫函式使用)C語言排序函式
- C語言實現A*演算法薦C語言演算法
- 快速排序用C語言可以這麼寫排序C語言
- 排序演算法-Java實現快速排序演算法排序演算法Java
- C語言實現有向無環圖的拓撲排序演算法C語言排序演算法
- 排序演算法之快速排序的實現排序演算法
- 演算法導論學習之三:排序之C語言實現:選擇排序,插入排序,歸併排序演算法排序C語言
- 快速排序(quicksort)演算法實現排序UI演算法
- python排序演算法的實現-快速排序Python排序演算法
- PID演算法的C語言實現演算法C語言
- bash shell 實現快速排序演算法排序演算法
- 如何使用Python語言實現計數排序演算法?Python排序演算法
- ORACLE 數字演算法的C語言實現Oracle演算法C語言
- 資料結構與演算法分析(c 語言描述)基數排序 陣列實現資料結構演算法排序陣列
- c#-快速排序-演算法C#排序演算法
- C語言 遞迴實現二叉排序樹的插入C語言遞迴排序
- 三種語言實現歸併排序(C++/Python/Java)排序C++PythonJava
- 歸併排序——C語言排序C語言
- 演算法導論C語言實現: 演算法基礎演算法C語言
- Sort排序專題(5)快速排序(QuickSort)(C++實現)排序UIC++
- js實現兩種實用的排序演算法——冒泡、快速排序JS排序演算法
- 位反轉的最佳演算法(C語言實現)演算法C語言
- 演算法單鏈錶快速排序演算法實現演算法排序
- 掃雷--C語言實現C語言
- C語言實現DES加密C語言加密
- c語言實現階乘C語言
- python實現氣泡排序、插入排序以及快速排序演算法Python排序演算法
- 快速排序的三種實現方法 (C++)排序C++
- 二十、快速排序演算法——JAVA實現(遞迴)排序演算法Java遞迴
- C語言 連結串列排序C語言排序