题目: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)区间,不然有一个数没有遍历到,而产生错误,血的教训。。

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

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

 #include<iostream>

 using namespace std;

 int q_sort_partition(int a[],int low,int high){
//cout<<"low="<<low<<" high="<<high<<endl;
int t = a[low];
int i = low;
int j = high;
while(i<j){
while(i<j && a[--j]>t); a[i] = a[j];
//cout<<"j0="<<j<<endl;
while(i<j && a[++i]<t); a[j] = a[i];
//cout<<"i0="<<i<<endl;
}
a[i] = t;
//cout<<"i="<<i<<endl;
return i;
} void q_sort(int a[],int low,int high){
if(low<high){
int p = q_sort_partition(a,low,high);
//cout<<"p="<<p<<endl;
q_sort(a,low,p);
q_sort(a,p+,high);
}
return ;
} int main(){
int i,n;
int a[];
while(cin>>n){
for(i=;i<n;i++)
cin>>a[i];
q_sort(a,,n);
cout<<a[n/]<<endl;
}
return ;
}

hdu1157 快排的更多相关文章

  1. F#之旅4 - 小实践之快排

    参考文章:https://swlaschin.gitbooks.io/fsharpforfunandprofit/content/posts/fvsc-quicksort.html F#之旅4 - 小 ...

  2. 快排 快速排序 qsort quicksort C语言

    现在网上搜到的快排和我以前打的不太一样,感觉有点复杂,我用的快排是FreePascal里/demo/text/qsort.pp的风格,感觉特别简洁. #include<stdio.h> # ...

  3. iOS常见算法(二分法 冒泡 选择 快排)

    二分法: 平均时间复杂度:O(log2n) int halfFuntion(int a[], int length, int number)  { int start = 0; int end = l ...

  4. C++ 快排

    // 进行一轮快排并返回当前的中间数 int getMiddle( int* arr, int low, int high ) { auto swaparr = [&]( int i, int ...

  5. 先贴上代码:Random快排,快排的非递归实现

    设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为主元,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序.值得注意的是, ...

  6. Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等

    本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...

  7. ACM/ICPC 之 快排+归并排序-记录顺序对(TSH OJ-LightHouse(灯塔))

    TsingHua OJ 上不能使用<algorithm>头文件,因此需要手写快排(刚开始写的时候自己就出了很多问题....),另外本题需要在给横坐标排序后,需要记录纵坐标的顺序对的数量,因 ...

  8. 数组第K小数问题 及其对于 快排和堆排 的相关优化比较

    题目描述 给定一个整数数组a[0,...,n-1],求数组中第k小数 输入描述 首先输入数组长度n和k,其中1<=n<=5000, 1<=k<=n 然后输出n个整形元素,每个数 ...

  9. 结构体快排回顾(sort)

    一般来说,我做竞赛的时候排序一般用快排 很快很方便 普通sort(从小到大) sort(a,a+n); 直接贴一段代码吧,包含了vector,sort,结构体等简单东西综合 #include < ...

随机推荐

  1. 为什么需要main函数,及其参数的用法

    首先,需要明确main函数是什么? 答:main函数是C语言约定的入口函数 C99标准里面是这样描述的: Program startup The function called at program ...

  2. stm32工程模板的创建

    创建完成后 STM32F10X_HD,USE_STDPERIPH_DRIVER, 以及包含头文件

  3. .Net文件上传--小数据--un

    文件上传控件:FileUpload - 控件,界面+方法+属性Button/LinkButton/ImageButton FileUpload控件:1.SaveAs("要上传到服务器的绝对路 ...

  4. MyBatis环境搭建

    什么是MyBatis: MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架(O object R relatoin M mapping 框架),MyBatis 避免了几 乎所 ...

  5. 搭建本地的git仓库

    折腾了快一天了,终于搭建成功了. 分享一下搭建的步骤: 一.GIT仓库的创建 1. adduser git 2. passwd git 此例设置git的密码为123456 3. cd /home/gi ...

  6. 用ActionSupport实现验证

    第一种: 只要Action类继承了ActionSupport,就可以用验证方案了 是个原始的方案,需要自己写代码,但是很灵活,登陆案例 不足:业务处理和验证的代码混在一起,不方便验证部分的复用和维护 ...

  7. C# 操作的时候接收用户输入密码进行确认

    首先新建一个原始窗体,如下:

  8. Codeforces Round #243 (Div. 2) B(思维模拟题)

    http://codeforces.com/contest/426/problem/B B. Sereja and Mirroring time limit per test 1 second mem ...

  9. 6.mybatis异常:SQL Mapper Configuration,Error parsing Mapper XML,Could not resolve type alias

    在xxxMapper中 <select id="getClazz" parameterType="int" resultType="getCla ...

  10. C# 线程(六):定时器

    From : http://kb.cnblogs.com/page/42532/ Timer类:设置一个定时器,定时执行用户指定的函数. 定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数. ...