zoukankan      html  css  js  c++  java
  • 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 }

    结果

  • 相关阅读:
    notepad++的使用
    windows下的ubuntu
    VMware Tools安装
    Terminal命令
    Linux文件操作
    vim学习
    Windows桌面美化
    求解移动字符串问题
    求解回文序列问题
    用Git命令把本地项目,提交到远程仓库
  • 原文地址:https://www.cnblogs.com/cdp1591652208/p/6209659.html
Copyright © 2011-2022 走看看