• 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 }

    结果

  • 相关阅读:
    string与wstring之间的转换
    QTableWidget去除选中虚边框
    在新机器部署Qt+mysql程序
    Qt文件路径分隔符
    MySQL通过增加用户实现远程连接数据库
    Qt 配置文件QSettings读取以及中文问题
    git config proxy
    ubuntu14.04 us sources.list
    How to keep Environment Variables when Using SUDO
    ubuntu hash sum mismatch error
  • 原文地址:https://www.cnblogs.com/cdp1591652208/p/6209659.html
Copyright © 2020-2023  润新知