zoukankan      html  css  js  c++  java
  • hdu1157 快排

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1157

    大意:排序,取中间数。

    PS:1.自己实现了下快排函数,也可以使用#include<algorithm>下的sort(a,a+n);函数,默认升序,若要降序or结构体排序可以增加第三个参数,声明排序规则。

         2.在写这个快排的时候出现了很多问题,花了比较多的时间,对自己很不满意。

         3.在这个while循环里写自减时,应该是j=high+1(分(low~p-1)和(p+1~high)),若不进行high+1,则需要分为(low~p)和(p+1~high)区间,不然有一个数没有遍历到,而产生错误,血的教训。。

    1 while(i<j && a[--j]>t); a[i] = a[j];
    2         //cout<<"j0="<<j<<endl;
    3  while(i<j && a[++i]<t); a[j] = a[i];

      4.希望自己以后在面试时或者其他时候遇到这样的问题不会出现同样的错误

     1 #include<iostream>
     2 
     3 using namespace std;
     4 
     5 int q_sort_partition(int a[],int low,int high){
     6     //cout<<"low="<<low<<" high="<<high<<endl;
     7     int t = a[low];
     8     int i = low;
     9     int j = high;
    10     while(i<j){
    11         while(i<j && a[--j]>t); a[i] = a[j];
    12         //cout<<"j0="<<j<<endl;
    13         while(i<j && a[++i]<t); a[j] = a[i];
    14         //cout<<"i0="<<i<<endl;
    15     }
    16     a[i] = t;
    17     //cout<<"i="<<i<<endl;
    18     return i;
    19 }
    20 
    21 void q_sort(int a[],int low,int high){
    22     if(low<high){
    23         int p = q_sort_partition(a,low,high);
    24         //cout<<"p="<<p<<endl;
    25         q_sort(a,low,p);
    26         q_sort(a,p+1,high);
    27     }
    28     return ;
    29 }
    30 
    31 int main(){
    32     int i,n;
    33     int a[10005];
    34     while(cin>>n){
    35         for(i=0;i<n;i++)
    36             cin>>a[i];
    37         q_sort(a,0,n);
    38         cout<<a[n/2]<<endl;
    39     }
    40     return 0;
    41 }
  • 相关阅读:
    Quartz快速入门 (转自 http://www.blogjava.net/baoyaer/articles/155645.html)
    C#HTML 转文本及HTML内容提取
    创建连接字符串方法
    源生js _AJax
    .NET里面附件上传大小限制的控制
    错误记录 COM
    Quartz的cron表达式
    Quartz 多任务调用
    Myeclipse的web工程和Eclipse互相转换
    Myeclipse8.0序列号生成程序
  • 原文地址:https://www.cnblogs.com/pngcui/p/4374441.html
Copyright © 2011-2022 走看看