数据结构 lucky_ming幸运的小明
问题描述
在快速排序过程中, 每次会找一个划分值, 将小于划分值的放到其左边, 大于划分值的
放右边, 然后再依次递归左右两边, 对子序列进行同样的操作, 直到子序列为空则停止操作。
最后就得到了有序的序列。
如何找到一个合适的划分值? 小茗同学也不知道, 所以他用了随机算法。 小茗同学的运
气很好, 每次都刚好随机到中位数, 但是他也不知道这个过程中使用到的划分值都是多少。
所以你需要帮助小茗同学找出整个排序过程中, 用到的所有划分值, 并按照其用到的顺序输
出。
假定(1) 快速排序优先递归排序左边序列, 然后才是右边序列;
(2) 中位数定义为序列中的第⌈ n/2⌉ 大的数(n 表示序列长度, ⌈ ⌉ 表示向上取整) 。
如 3 4 1 的中位数是 3, 3 4 1 2 的中位数是 2;
★数据输入
输入的第一行为数字 n (1 ≤ n ≤ 10^5), 表示给定序列的长度。
第二行包含 n 个整数, 表示序列中的整数 a1, a2, ..., an。 (1 ≤ ai ≤ 10^9)。 序列中的数互
不相同。
★数据输出
在一行中依次输出划分值。
| 输入示例 | 输出示例 |
| 53 1 5 2 4 |
3 1 2 4 5 |
思路
快排 二分
code
#include <stdio.h>
#include <stdlib.h> void merge(int *p,int l,int r)
{
if(l<=r)
{
int m = (l+r)/;
printf("%d ",p[m]);
merge(p,l,m-);
merge(p,m+,r);
}
} int cmp(const void *a, const void *b)
{
return *(int*)a - *(int*)b;
} int main()
{
int i,j;
int n;
scanf("%d",&n);
int *p = (int *)malloc(sizeof(int)*n);
for(i=;i<n;i++)
{
scanf("%d",p+i);
}
qsort(p,n,sizeof(int),cmp);
// for(i=0;i<n;i++) printf("%d ",p[i]); printf("\n");
merge(p,,n-); free(p);
return ;
}
数据结构 lucky_ming幸运的小明的更多相关文章
- HDU 3791 二叉搜索树 (数据结构与算法实验题 10.2 小明) BST
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3791 中文题不说题意. 建立完二叉搜索树后进行前序遍历或者后序遍历判断是否一样就可以了. 跟这次的作业第 ...
- 小明的密码-初级DP解法
#include #include #include using namespace std; int visited[5][20][9009];// 访问情况 int dp[5][20][9009] ...
- 小明系列问题――小明序列(LIS)
小明系列问题――小明序列 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
- ACM 擅长排列的小明
擅长排列的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想 ...
- ACM 懒省事的小明
懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ...
- 管闲事的小明-nyoj51
描述某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,……,L,都种有一棵 ...
- HDU2096 小明A+B
入门级都没到的水题!看到顺便就做了,AC记录喜+1 Description 小明今年3岁了, 现在他已经能够认识100以内的非负整数, 并且能够进行100以内的非负整数的加法计算. 对于大于等于100 ...
- 小明A+B[HDU2096]
小明A+B Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- nyist 676 小明的求助
http://acm.nyist.net/JudgeOnline/problem.php?pid=676 小明的求助 时间限制:2000 ms | 内存限制:65535 KB 难度:2 描述 ...
随机推荐
- HihoCoder1449 重复旋律6(后缀自动机)
描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为一段数构成的数列. 现在小Hi想知道一部作品中所有长度为K的旋律中出现次数最多的旋律的出现次数.但是K不是固定的,小Hi想知道对 ...
- python实现进程的并发
__author__ = 'luozt' import telnetlib import multiprocessing import random def telnet(ip,hostname): ...
- Python函数-bool()
bool([x]) 作用: 将x转换为Boolean类型,如果x缺省,返回False,bool也为int的子类: 参数x: 任意对象或缺省:大家注意到:这里使用了[x],说明x参数是可有可无的,如果不 ...
- hdu 2899 Strange fuction——模拟退火
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2899 还可三分.不过只写了模拟退火. #include<iostream> #include& ...
- 4、运行成功的Demo(PyCharm+Selenium)
1.打开PyCharm,新建一个python.file,输入代码“from selenium import webdriver”报错的解决方法 (1)PyCharm没有找到正确的python,在“Fi ...
- 在Azure上搭建L2TP服务器
L2TP是常用的一种point-site的VPN.而目前在Azure上的VPN Gateway只支持IPsec和SSTP两种.如果客户需要L2TP服务器,需要自己在VM中搭建.本文将介绍如何在Azur ...
- 蓝桥杯 基础训练 BASIC-27 2n皇后问题
基础练习 2n皇后问题 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都 ...
- JavaScript去除字符串两边空格trim
去除字符串左右两端的空格,在大部分编程语言中,比如PHP.vbscript里面可以轻松地使用 trim.ltrim 或 rtrim实现.但在js中却没有这3个内置方法,需要手工编写.下面的实现方法是用 ...
- live555源码分析----RSTPServer创建过程分析
最近五一回家,终于有机会能安静的看一下流媒体这方面相关的知识,准备分析live555的源码,接下来会把我读源码的过程记录成博客,以供其他的同路人参考. 因为再读源码的过程中,并不是一路顺着读下来,往往 ...
- JCTF 2014(Reverse)
小菜一碟: 点击下载附件 下载的附件没有后缀,用c32打开看看 是apk文件,用Smali2JavaUI打开 程序把输入框的字符串反转,然后进行MD5加密,最后进行base64编码,与NzU2ZDJm ...