东大OJ-快速排序】的更多相关文章

看了十年才懂懂了十年才会会了十年才会写写了十年才写完写完了十年才能改对 #include<stdio.h> #include<string.h> struct res{ int steps; int father; }; int a[50001]; res findfather(int me){ res r; r.steps = 0; while (a[me] != -1){ me = a[me]; r.steps++; } r.father = me; return r; } i…
1034: Max Area 时间限制: 1 Sec  内存限制: 128 MB 提交: 40  解决: 6 [提交][状态][讨论版] 题目描述 又是这道题,请不要惊讶,也许你已经见过了,那就请你再来做一遍吧.这可是wolf最骄傲的题目哦.在笛卡尔坐标系正半轴(x>=0,y>=0)上有n个点,给出了这些点的横坐标和纵坐标,但麻烦的是这些点的坐标没有配对好,你的任务就是将这n个点的横坐标和纵坐标配对好,使得这n个点与x轴围成的面积最大. 输入 在数据的第一行有一个正整数m,表示有m组测试实例.…
题目地址:http://oj.tsinsen.com/A1082 问题描述 给定一个大小为n的数组s和一个整数K,请找出数组中的第K小元素. 这是一个补充程序的试题,你需要完成一个函数: int findKth(int *s, int n, int K) 表示在s指向的数组中找到第K小的元素(如果K=1,表示找最小元素),你需要返回该元素的值. 此题对时间的要求比较高,请注意下面的算法描述. 算法描述 你可以直接将s中的元素进行排序后输出第K小的元素,但使用这种方法你大概只能得到30%的分数.…
Description 给你n个整数,请按从大到小的顺序输出其中前m大的数. Input 每组测试数据有两行,第一行有两个数n,m(0 < n,m < 1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数. Output 对每组测试数据按从大到小的顺序输出前m大的数. Sample Input 5 3 3 -35 92 213 -644 Sample Output 213 92 3 emm 一开始呢,用快速排序找前m大的数 一提交,超时--淦 后来度娘一…
数据结构实验之排序八:快速排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 给定N(N≤10^5)个整数,要求用快速排序对数据进行升序排列,注意不得使用STL.   Input  连续输入多组数据,每组输入数据第一行给出正整数N(≤10^5),随后给出N个整数,数字间以空格分隔. Output  输出排序后的结果,数字间以一个空格间隔,行末不得有多余空格. Sample Inpu…
描述 海上有许多灯塔,为过路船只照明.从平面上看,海域范围是[1, 10^8] × [1, 10^8] . (图一) 如图一所示,每个灯塔都配有一盏探照灯,照亮其东北.西南两个对顶的直角区域.探照灯的功率之大,足以覆盖任何距离.灯塔本身是如此之小,可以假定它们不会彼此遮挡. (图二) 若灯塔A.B均在对方的照亮范围内,则称它们能够照亮彼此.比如在图二的实例中,蓝.红灯塔可照亮彼此,蓝.绿灯塔则不是,红.绿灯塔也不是. 现在,对于任何一组给定的灯塔,请计算出其中有多少对灯塔能够照亮彼此. 输入 共…
快速排序 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte总提交:653            测试通过:297 描述 给定输入排序元素数目n和相应的n个元素,写出程序,利用内排序算法中快速排序算法进行排序,并输出排序最后结果的相应序列. 输入 共两行,第一行给出排序元素数目n,第二行给出n个元素,1≤n≤100000,每个元素值范围为 [0,100000) 输出 一行,输出排序结果. 样例输入 748 36 68 72 12 48 2…
oj链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1196 Java中,Arrays.sort()静态方法就是利用的快速排序,(看到网上有的说用的归并排序,测试了下,跟自己写的快速排序消耗的时间和空间都一样,所以确定是快速排序),对类的集合排序,需要实现Comparable接口,(类似C++ STL中sort函数需要的小于号).初学Java集合,记录一下.初学者..下面是调用Arrays.sor…
PKU OJ 1002 487-3279 487-3279 Description Businesses like to have memorable telephone numbers. One way to make a telephone number memorable is to have it spell a memorable word or phrase. For example, you can call the University of Waterloo by dialin…
课本上常见的快速排序都是选择一个枢纽元(Pivot),基于这个枢纽元从前后双向扫描分成大于枢纽元和小于枢纽元的.而从JDK 7开始,java.util.Arrays.sort()使用双基准快速排序(Dual-Pivot Quicksort)作为实现. 传统快速排序: 选择枢纽元pivot,有很多种选法,但都只有一个. 基于枢纽元分成大于和小于的两部分,并且枢纽元放到最终的位置. 递归排序大于和小于的两部分. 双基准快速排序: 对于长度小于17的数组使用插入排序(常见优化步骤,传统快排也有应用).…