zoukankan      html  css  js  c++  java
  • 快速排序

    下面代码注释有具体解释,这里就不多说,直接上代码

     1 #include<stdio.h>
     2 #include<algorithm>
     3 using namespace std;
     4 
     5 #define maxsize 1000
     6 int a[maxsize],n;
     7 
     8 void quickSort(int left,int right)
     9 {
    10     int i,j,temp;
    11     if(left>right)
    12         return;
    13 
    14     //存储基准数
    15     temp = a[left];
    16     i=left;
    17     j=right;
    18     while(i!=j)
    19         {
    20             //先从右往左找,这是必须的
    21             while(a[j]>=temp && i<j)
    22                 j--;
    23             //从左往右找
    24             while(a[i]<=temp && i<j)
    25                 i++;
    26                 //如果没有相遇,就交换
    27             if(i<j)
    28                 {
    29                     swap(a[i],a[j]);
    30                 }
    31         }
    32         //最后将第一个数与i现在的数交换,这样就将一个数的位置确定了,左边都比他小,右边都比他大
    33     a[left]=a[i];
    34     a[i]=temp;
    35 
    36     //用递归的思想将左边和右边的无序序列都进行排序,每次确定一个数,当left比right大的时候全部就排序完成了
    37     quickSort(left,i-1);
    38     quickSort(i+1,right);
    39 }
    40 
    41 int main()
    42 {
    43     scanf("%d",&n);
    44     for(int i=1; i<=n; i++)
    45         {
    46             scanf("%d",&a[i]);
    47         }
    48     quickSort(1,n);
    49 
    50     for(int i=1; i<=n; i++)
    51         {
    52             printf("%d ",a[i]);
    53         }
    54     printf("
    ");
    55 
    56 }
  • 相关阅读:
    getopt 命令行参数解析
    Linux下使用indent整理代码
    终端常用快捷键
    gedit 乱码解决
    linux sysrq
    linux下的文件审计功能(audit inotify)
    gdb基本命令
    linux shell 字符截断
    linux 设置时间 date命令
    Ubuntu 时间同步
  • 原文地址:https://www.cnblogs.com/swust-wangyf/p/6770843.html
Copyright © 2011-2022 走看看