c语言数据结构之 快速排序
编译器:VS2013
1 #include "stdafx.h" 2 #include<stdlib.h> 3 #include<stdio.h> 4 5 //函数声明 6 7 void QuickSort(int a[], int n); //快速排序(从小到大) 8 void QSort(int a[], int m, int n); //快速排序的递归调用 9 int Pratition(int a[], int m, int n); //快速单次排序 10 11 int main() 12 { 13 int i, n, a[100]; 14 printf("请输入需要排序元素的个数:"); 15 scanf_s("%d", &n); 16 printf("随机生成的数组为:"); 17 for (i = 1; i <= n; i++) 18 { 19 a[i] = rand() % 100 + 1; 20 printf("%d ", a[i]); 21 } 22 a[i] = '\0'; 23 printf("\n"); 24 25 QuickSort(a, n); 26 27 } 28 29 //快速排序(从小到大) 30 void QuickSort(int a[], int n) 31 { 32 int i; 33 QSort(a, 1, n); 34 printf("\n快速排序后的结果(从小到大):"); 35 for (i = 1; i <= n; i++) 36 printf("%d ", a[i]); 37 printf("\n\n"); 38 } 39 40 //快速排序的递归调用 41 void QSort(int a[], int m, int n) 42 { 43 int i; 44 if (m < n) 45 { 46 i = Pratition(a, m, n); 47 QSort(a, m, i - 1); 48 QSort(a, i + 1, n); 49 } 50 } 51 52 //快速单次排序 53 int Pratition(int a[], int i, int j) 54 { 55 a[0] = a[i]; 56 while (i < j) 57 { 58 while (i<j&&a[j]>a[0]) 59 j--; 60 a[i] = a[j]; 61 while (i<j&&a[i] < a[0]) 62 i++; 63 a[j] = a[i]; 64 } 65 a[i] = a[0]; 66 return i; 67 }
结果