poj 2623 快排
一、题目大意
就是求中间的数。
二、AC code
递归快排ac版:
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <vector>
#include <cmath>
#include <algorithm>
#include <set>
#include <cassert>
#include <time.h>
#include <queue>
#include <map>
#include <stack>
#include <bitset>
#include <string>
#include <sstream>
#include <list>
#define INF 0x3f3f3f3fusing namespace std;template <class Type>
Type stringToNum(const string& str)
{istringstream iss(str);Type num;iss >> num;return num;
}//======================================================#define MAXN 250002int a[MAXN];void quickSort(int *arr, int left, int right){int i = left, j = right;int mid = arr[(i+j)/2];while(i <= j){while(arr[i] < mid) i ++;while(arr[j] > mid) j --;if(i <= j){int tmp;tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp;i ++; j --;}}if(i < right) quickSort(arr,i, right);if(left < j) quickSort(arr,left, j);
}int main()
{//freopen("input.txt","r",stdin);int N;cin>>N;for (int i = 1; i <= N; ++i) {scanf("%d",&a[i]);}quickSort(a,1,N);if(N%2) //oddprintf("%d.0\n", a[(N+1)/2]);else {double sum = (double)a[N/2] + (double)a[N/2+1];printf("%.1lf\n", sum / 2);}return 0;
}
可以水过,但是不知道为什么用g++也会WA,用c++ OK
同时因为数的范围过大,用计数排序不靠谱。
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <vector>
#include <cmath>
#include <algorithm>
#include <set>
#include <cassert>
#include <time.h>
#include <queue>
#include <map>
#include <stack>
#include <bitset>
#include <string>
#include <sstream>
#define INF 0x3f3f3f3fusing namespace std;template <class Type>
Type stringToNum(const string& str)
{istringstream iss(str);Type num;iss >> num;return num;
}//======================================================#define MAXN 250002long long a[MAXN];int main()
{//freopen("input.txt","r",stdin);int N;cin>>N;for (int i = 1; i <= N; ++i) {scanf("%lld",&a[i]);}sort(a+1,a+N+1);//oddif(N%2)printf("%lld.0\n", a[(N+1)/2]);else {//printf("%.1lf\n", ((double)a[N/2]+(double)a[(N/2)+1])/2); //ok//ok
// double sum = (double)a[N/2]+(double)a[(N/2)+1];
// printf("%.1lf\n",sum / 2);printf("%.1lf\n", (double)(a[N/2]+a[(N/2)+1])/2);}return 0;
}
stl二分会超时:
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <vector>
#include <cmath>
#include <algorithm>
#include <set>
#include <cassert>
#include <time.h>
#include <queue>
#include <map>
#include <stack>
#include <bitset>
#include <string>
#include <sstream>
#include <list>
#define INF 0x3f3f3f3fusing namespace std;template <class Type>
Type stringToNum(const string& str)
{istringstream iss(str);Type num;iss >> num;return num;
}//======================================================#define MAXN 250002vector<int > v;//有序数组递减排列
int binarySearch(vector<int > array,int len,int value){int mid=0;int low=0;int high=len-1;while(low<=high){mid=(low+high)/2;if(array[mid]>value){ //在右半区low=mid+1;continue;}else if(array[mid]<value){ //在左半区high=mid-1;continue;}elsereturn mid; //找到}return low; //insert pos
}int main()
{//freopen("input.txt","r",stdin);int N;cin>>N;for (int i = 1; i <= N; ++i) {long long tmp;scanf("%lld",&tmp);int pos = binarySearch(v,i-1,tmp);v.insert(v.begin() + pos, tmp);}if(N%2) //oddprintf("%lld.0\n", v[(N+1)/2-1]);elseprintf("%.1lf\n", (double)(v[N/2-1]+v[N/2])/2);return 0;
}
poj 2623 快排相关推荐
- c语言程序快排,C语言快排
C语言使用快排的方式有两种,1.直接用库函数stdlib.h里的qsort函数 2.自己编写快排代码(第一种方便,第二种较为自由) qsort 的函数原型是: void qsort(void*base ...
- 快速排序(快排)--->注释超详细
基本思想: 1.先选取一个基准值(一般选取数组第一个元素). 2.以第一步选取的基准值为标准,然后从最后一个数值开始一步步向前走将数字与基准值进行比较,如果该值大于基准 ...
- java快排算法解读,java 快排的思路与算法
java 快排的思路与算法 有时候面试的时候的会问道Arrays.sort()是怎么实现的,我以前根本不知道是什么东西,最近点进去看了一下.直接吓傻, //看到这个时候还是比较淡定的,可怕的事情来了. ...
- java 快排_八大排序-快速排序(搞定面试之手写快排)
概要 快速排序由C. A. R. Hoare在1960年提出,是八大排序算法中最常用的经典排序算法之一.其广泛应用的主要原因是高效,核心算法思想是分而治之.快速排序经常会被作为面试题进行考察,通常的考 ...
- 排序(一)归并、快排、优先队列等(图文具体解释)
排序(一) 0基础排序算法 选择排序 思想:首先,找到数组中最小的那个元素.其次,将它和数组的第一个元素交换位置.再次.在剩下的元素中找到最小的元素.将它与数组的第二个元素交换位置. 如此往复,直到将 ...
- 快排递归非递归python_Python递归神经网络终极指南
快排递归非递归python Recurrent neural networks are deep learning models that are typically used to solve ti ...
- ACdream 1099——瑶瑶的第K大——————【快排舍半,输入外挂】
瑶瑶的第K大 Time Limit:2000MS Memory Limit:128000KB 64bit IO Format:%lld & %llu Submit Status ...
- 冒泡链表排序java_链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)...
以下排序算法的正确性都可以在LeetCode的链表排序这一题检测.本文用到的链表结构如下(排序算法都是传入链表头指针作为参数,返回排序后的头指针) struct ListNode { int val; ...
- python实现快排算法(quicksort)
python实现快排算法(quicksort) 快速排序是对冒泡排序的一种改进.它的基本思想是:通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后 ...
最新文章
- Redis3.0.5配置文件详解
- HTTP请求格式和HTTP响应格式
- Leetcode 739. 每日温度 (每日一题 20211014)
- matlab 聚类 源程序,聚类——KFCM的matlab程序
- Abp框架多租户源码解读
- 安装win10和ubuntu16双系统
- 腾讯会议瞩目会议开启共享屏幕时候出现卡顿时候,是显卡问题。
- c++早绑定和晚绑定
- LGame-0.3(Android与JavaSE游戏引擎)正式发布,新增SRPG制作模块
- HDFS常用命令总结
- MATLAB中神经网络工具箱的使用
- python批量转换音频采样率
- 明天9:00 | ECCV 2022 全球博士TalK——计算机视觉领域顶会
- html页面字体飞入飞出特效,JS网页特效:星空飞入效果
- VC MFC按钮(CButton)控件
- 临床执业助理医师(综合练习)题库【5】
- 在PPT中怎么对图片进行排版?使用SmartArt一键教你搞定!
- Windows系统实现共享文件夹——通过无账号密码方式访问
- 网上赚钱风口,捡芝麻丢西瓜
- 货币兑换java程序,货币兑换API Java GUI