题目要求

题目链接

分析

题很简单,但对sort()的效率有要求。

开始用Java写了一版:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;public class Main {public static void main(String[] args) throws IOException {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));reader.readLine();String[] read = reader.readLine().split("\\s+");reader.close();int[] nums = new int[read.length];for (int i = 0; i < nums.length; i++) {nums[i] = Integer.parseInt(read[i]);}Arrays.sort(nums);StringBuilder result = new StringBuilder();for (int i : nums) {result.append(i).append(" ");}System.out.println(result.toString().trim());}
}

终究还是T了:

看了看,差的也不少,所以换C++,分析见此:《一文道破快速排序从理解到优化》。

AC代码(C++)

#include<iostream>
using namespace std;
int a, num, array[2000001];/*** 应用二分思想* @param left 左索引* @param right 右索引*/
void quickSort(int left, int right) {int mid = array[(left+right)/2];//中间数int i = left, j = right;do {while (array[i] < mid) {i++;//查找左半部分比中间数大的数}while (array[j] > mid) {j--;//查找右半部分比中间数小的数}if (i <= j) {swap(array[i], array[j]);//交换i++;j--;}} while (i <= j);if (left < j) {quickSort(left, j);//递归搜索左半部分}if (i < right) {quickSort(i, right);//递归搜索右半部分}
}int main() {cin >> a >> num;for (int i = 1; i <= num; i++) {cin >> array[i];}quickSort(1, num);for (int i = 1; i <= num; i++) {cout << array[i] << " ";}
}

选举学生会(洛谷P1271题题解,Java/C++语言描述)相关推荐

  1. 修改数组(洛谷P7285题题解,C++语言描述)

    题目要求 P7285题目链接 分析 这题虽然是红题,但是因为很有趣且是 Special Judge ,所以写篇题解. 乍一看,这题好麻烦啊,要综合考虑xxx和yyy,达到x−yx-yx−y的最优化. ...

  2. Emacs(洛谷P6866题题解,C++语言描述)

    题目要求 题目链接 分析 这题是一道入门难度的题,但很有意思,所以分享一下. 不知道会不会有人考虑到什么连通区域.DFS之类的奇怪内容,抑或是苦于不知道怎么去循环搜索. 其实很简单,开一个大数组,把边 ...

  3. 斐波那契数列升级版(洛谷P2626题题解,C++语言描述)

    题目要求 题目链接 分析 首先是求斐波那契数列,这东西我就不说了,能看到这篇题解的你肯定会. 为什么要用数组呢?为了记忆化,防止重复算. 当然,由于本题是单查询,所以不必记忆化,但记忆化对多查询真的会 ...

  4. 查找(洛谷P2249题题解,C++语言描述)

    题目要求 题目链接 分析 可以用内置函数直接解:lower_bound(a.begin(), a.end(), i) 如果自己写二分查找也行,注意是第一个出现的,所以不注意的话求的可不是第一个呀! 另 ...

  5. 坏掉的项链(洛谷P1203题题解,C++语言描述)

    题目要求 题目链接 分析 链子是循环的,随便选一点断开不合适,所以把它作为一个线性的字符串其实不好. 处理方法是将字符串扩增一倍,即necklace += necklace; 这样的话,我们从初始出发 ...

  6. 魔法少女小Scarlet(洛谷P4924题题解,C++语言描述)

    题目要求 题目链接 分析 数据量不大,直接开模拟即可. 此题恶心的地方就是题意理解与下标模拟. 首先,按要求初始化一个二维数组并填充[1,n2][1,n^{2}][1,n2]. 然后,分别进行每一次旋 ...

  7. 数字三角形(洛谷P1216题题解,C++语言描述)

    题目要求 题目链接 分析 应该用DP来解,对于题给三角形,我们可以这么看: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 从上到下坐标x递增,从左到右坐标y递增. 我们要求的是全局最优解 ...

  8. 线段覆盖(洛谷P1803题题解,C++语言描述)

    题目要求 P1803题目链接 分析 这题是一个线段覆盖问题,但并不是很复杂,也是贪心思想. 想要尽可能放线段,不能重合(可以正好相交),那就可以每一次只关注右端点,尽可能地选择剩余未选的线段中右端点最 ...

  9. 天然气井(洛谷P1708题题解,C++语言描述)

    题目要求 P1708题目链接 分析 这题挺有意思的,看起来是一个复杂的优化问题,其实很水. 主要是题给了很多限定条件,比如中转站和天然气井的个数相等,最后还是一一对应的,求得距离只是走横向或纵向的-- ...

  10. 数列求和(洛谷P5745题题解,C++语言描述)

    题目要求 题目链接 分析 思路参考自大佬的博客,此佬介绍了诸多解法,我学习了其中的O(N)O(N)O(N)解法: 维护一个队列,让数组中的数依次入队,并记录其的元素和,若大于m,则让对首出列,更新答案 ...

最新文章

  1. yml eureka defaultzone 只生效第一个_SpringCloud基础教程(三)-Eureka进阶
  2. qt 试用 (3)配置编译源代码及调试
  3. 看完就入门系列!吞吐量、消息持久化、负载均衡和持久化、伸缩性…… 你真的了解 Kafka 了吗?...
  4. 【数据格式】Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据
  5. HEVC---CompressCU 函数解析
  6. 【C#】SQL数据库助手类2.0(自用)
  7. Java 13新特性:switch表达式,文本块
  8. darknet 的python接口使用
  9. Xshell免费版安装 常用连接linux工具
  10. GEE、USGS、地理空间数据云上下载武汉地区的影像数据
  11. 时间序列研(part14)--习题
  12. 商业方向的大数据专业_大数据行业5个职位方向
  13. emacs python_将Emacs打造成强大的Python代码编辑工具
  14. ios旧版本app网站_你的iPhone还需要降级吗?深度分析:苹果为什么不开放iOS降级!...
  15. 某工厂配电线路及变电所设计
  16. flatten(扁平化)数组
  17. 如何实现简单粗暴靠谱的直播抓娃娃方案
  18. Python画星星和星空
  19. 柏林初创Meditopia​靠一个冥想App获1500万美元融资
  20. javaweb的lib文件夹

热门文章

  1. 移动端与PC端页面布局区别
  2. codeforces 540D Bad Luck Island (概率DP)
  3. DNS A记录和CNAME记录
  4. vue中使用导出表格功能
  5. 坑爹的水题之“元芳你怎么看”
  6. 下面哪个进制能表述 13*16=244是正确的?)[中国台湾某计算机硬件公司V2010年5月面试题]...
  7. The type Resource is not accessible due to restriction on required library
  8. linux内核端口绑定,linux 多网卡bonding 绑定 端口聚合
  9. asp连接oracle6,asp下用OracleInProcServer完成对Oracle的连接和操作-ASP教程,数据库相关...
  10. activiti 工作流_分享:springboot中关于工作流activiti的搭建