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] = '';
23     printf("
");
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("
快速排序后的结果(从小到大):");
35     for (i = 1; i <= n; i++)
36         printf("%d ", a[i]);
37     printf("

");
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 }

结果

原文地址:https://www.cnblogs.com/cdp1591652208/p/6209659.html