zoukankan      html  css  js  c++  java
  • 洛谷T1177 【模板】快速排序 快排

    边界情况害人不浅

     1 #include<cstdio>
     2 
     3 using namespace std;
     4 
     5 void qsort(int,int);
     6 
     7 int n,t,a[100005];
     8 
     9 int main(){
    10     scanf("%d",&n);
    11     for(int i=1;i<=n;i++)scanf("%d",a+i);
    12     qsort(1,n);
    13     for(int i=1;i<=n;i++)printf("%d ",a[i]);
    14     
    15     return 0;
    16 }
    17 
    18 void qsort(int l,int r){
    19     int i=l,j=r,k=a[(l+r)>>1];
    20     
    21     while(i<=j){  //<=的目的:将i=j的情况继续处理,直至i>j,下面的i<=j同理 
    22         while(a[i]<k)i++;  //<的目的:若用<=,则会在数据为大量重复数字时发生数组越界 
    23         while(a[j]>k)j--;  //同上 
    24         if(i<=j){
    25             t=a[i];
    26             a[i]=a[j];
    27             a[j]=t;
    28             i++;
    29             j--;
    30         }
    31     }
    32     
    33     if(l<j)qsort(l,j);  //递归边界判断置于上层以节省时间 
    34     if(i<r)qsort(i,r);
    35 }
  • 相关阅读:
    双击返回 退出程序
    读取InputStream 中的内容
    wsgi服务器
    python 中的GIL
    json
    __getattr__
    错误类型
    __slot__用法
    获取属性以及基本方法
    linux IO
  • 原文地址:https://www.cnblogs.com/running-coder-wfh/p/11152336.html
Copyright © 2011-2022 走看看