排序练习——找出前m大的数字 分类: 排序 2015-06-08 09:33 21人阅读 评论(0) 收藏
排序练习——找出前m大的数字
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入
输出
示例输入
- 2 1
- 4 3
- 4 2
- 1 2 898989 23
示例输出
- 4
- 898989 23
- 基数排序
#include <cstdio> #include <cmath> #include <cstring> #include <cstdlib> #include <iostream> using namespace std; const int MAX=110000; int Arr[MAX]; int Getdigit(int x,int d) { return (x/d)%10;//计算每位的数字 } void MSD_sort(int low,int high,int d) { int count[10]= {0}; int *b=new int[high-low+1];//为所有桶开辟空间 int sum=1; for(int k=1;k<=d;k++) { memset(count,0,sizeof(count)); for(int i=low;i<=high;i++) { count[Getdigit(Arr[i],sum)]++;//统计数据的数量 } for(int i=1;i<=9;i++) { count[i]+=count[i-1];//设置每个桶的右边界索引 } //讲数据装入桶中 for(int i=high;i>=low;i--)//从右向左,保证数据的稳定性 { int ans=Getdigit(Arr[i],sum);//计算关键码的数字; b[count[ans]-1]=Arr[i];//放入对应的桶中,aount[ans]-1为右边界索引 --count[ans]; } //收集数据 for(int i=low,j=0;i<=high;i++,j++) { Arr[i]=b[j]; } sum*=10; } delete b;//删除 } int main() { int n,m; while(~scanf("%d %d",&n,&m )) { for(int i=0; i<n; i++) { scanf("%d",&Arr[i]); } if(m>n) { cout<<"ERROR"<<endl; continue; } MSD_sort(0,n-1,9); for(int i=n-1; i>=(n-m); i--) { if(i!=n-1) printf(" "); printf("%d",Arr[i]); } printf("\n"); } return 0;}
<pre name="code" class="cpp">#include <bits/stdc++.h> #define RR freopen("input.txt","r",stdin) #define WW freopen("output.txt","w",stdout) #define ClearAll(A,T) memset(A,T,sizeof(A)) /* 手敲快排 */ using namespace std; const int Max=110000; int Arr[Max]; void Qsort(int low,int high) { int i=low,j=high,s=Arr[low]; if(i>=j) return ; while(i<j) { while(i<j&&Arr[j]<=s) j--; Arr[i]=Arr[j]; while(i<j&&Arr[i]>=s) i++; Arr[j]=Arr[i]; } Arr[i]=s; Qsort(low,i-1); Qsort(i+1,high);}
int main() { int n,m; while(~scanf("%d %d",&n,&m)) { for(int i=0; i<n; i++) { scanf("%d",&Arr[i]); } if(m>n) { printf("ERROR\n"); continue; } Qsort(0,n-1); for(int i=0; i<m; i++) { if(i) printf(" "); printf("%d",Arr[i]); } printf("\n"); } return 0; } Sort: #include <bits/stdc++.h> #define RR freopen("input.txt","r",stdin) #define WW freopen("output.txt","w",stdout) #define ClearAll(A,T) memset(A,T,sizeof(A)) using namespace std; const int Max=110000; int Arr[Max]; bool cmp(int a,int b) { return a>b; } int main() { int n,m; while(~scanf("%d %d",&n,&m)) { for(int i=0; i<n; i++) { scanf("%d",&Arr[i]); } if(m>n) { printf("ERROR\n"); continue; } sort(Arr,Arr+n,cmp); for(int i=0; i<m; i++) { if(i) printf(" "); printf("%d",Arr[i]); } printf("\n"); } return 0; } 归并排序: #include <bits/stdc++.h> #define RR freopen("input.txt","r",stdin) #define WW freopen("output.txt","w",stdout) #define ClearAll(A,T) memset(A,T,sizeof(A)) using namespace std; const int Max=110000; int Arr[Max]; int Tarr[Max]; void Merge(int low,int mid,int high) { int i=low,j=mid+1,k=0; while(i<=mid&&j<=high) { if(Arr[i]>=Arr[j]) Tarr[k++]=Arr[i++]; else Tarr[k++]=Arr[j++]; } while(i<=mid) { Tarr[k++]=Arr[i++]; } while(j<=high) { Tarr[k++]=Arr[j++]; } for(i=0; i<k; i++) { Arr[low+i]=Tarr[i]; } } void Qsort(int low,int high) { if(low<high) { int mid=(low+high)/2; Qsort(low,mid); Qsort(mid+1,high); Merge(low,mid,high); } } int main() { int n,m; while(~scanf("%d %d",&n,&m)) { for(int i=0; i<n; i++) { scanf("%d",&Arr[i]); } if(m>n) { printf("ERROR\n"); continue; } Qsort(0,n-1); for(int i=0; i<m; i++) { if(i) printf(" "); printf("%d",Arr[i]); } printf("\n"); } return 0; } /* 先建堆后调整; */ #include <bits/stdc++.h> #define RR freopen("input.txt","r",stdin) #define WW freopen("output.txt","w",stdout) #define ClearAll(A,T) memset(A,T,sizeof(A)) using namespace std; const int Max=110000; int Arr[Max]; void MaxHeap(int i,int n) { int j,ans; ans=Arr[i]; j=2*i+1; while(j<n) { if(j+1<n&&Arr[j+1]<Arr[j]) { j++; } if(Arr[j]>=ans) { break; } Arr[i]=Arr[j]; i=j; j=2*i+1; } Arr[i]=ans; } void MakeMaxHeap(int n) { for(int i=n/2-1;i>=0;i--) { MaxHeap(i,n); } } void Heap(int n) { for(int i=n-1;i>=0;i--) { swap(Arr[i],Arr[0]); MaxHeap(0,i); } } int main() { int n,m; while(~scanf("%d %d",&n,&m)) { for(int i=0;i<n;i++) { scanf("%d",&Arr[i]); } if(m>n) { printf("ERROR\n"); continue; } MakeMaxHeap(n); Heap(n); for(int i=0;i<m;i++) { if(i) printf(" "); printf("%d",Arr[i]); } printf("\n"); } return 0;}
版权声明:本文为博主原创文章,未经博主允许不得转载。
排序练习——找出前m大的数字 分类: 排序 2015-06-08 09:33 21人阅读 评论(0) 收藏的更多相关文章
- Hdu 1429 胜利大逃亡(续) 分类: Brush Mode 2014-08-07 17:01 92人阅读 评论(0) 收藏
胜利大逃亡(续) Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Subm ...
- 8大排序算法图文讲解 分类: Brush Mode 2014-08-18 11:49 78人阅读 评论(0) 收藏
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 常见的内部排序算法有:插入排序.希尔排序. ...
- Hdu1429 胜利大逃亡(续) 2017-01-20 18:33 53人阅读 评论(0) 收藏
胜利大逃亡(续) Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Subm ...
- SQL string类型的数据按int类型排序 分类: SQL Server 2014-12-08 16:56 393人阅读 评论(0) 收藏
说明: 我在做wms进销存软件时,发现一个问题:一张入库单(T_OutIn_BoxTop),入库扫描时要分成多箱,箱号(BoxTop_No)可以是数字也可以是字符串,所以箱号只能是字符串类型的,问题来 ...
- 合并k个已排序的链表 分类: leetcode 算法 2015-07-09 17:43 3人阅读 评论(0) 收藏
最先想到的是把两个linked lists 合并成一个. 这样从第一个开始一个一个吞并,直到所有list都被合并. class ListNode:# Definition for singly-lin ...
- 8大排序算法图文讲解 分类: B10_计算机基础 2014-08-18 15:36 243人阅读 评论(0) 收藏
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 常见的内部排序算法有:插入排序.希尔排序. ...
- 各种排序算法的分析及java实现 分类: B10_计算机基础 2015-02-03 20:09 186人阅读 评论(0) 收藏
转载自:http://www.cnblogs.com/liuling/p/2013-7-24-01.html 另可参考:http://gengning938.blog.163.com/blog/sta ...
- C#期末大作业 消消乐 2017-06-01 18:11 275人阅读 评论(0) 收藏
邻近期末,忙于刷题之余意识到期末大作业来不及了,匆匆赶下了作业,虽说做的很是粗糙,但完全原创的 下载链接 https://pan.baidu.com/s/1cCNLr4 大体的做大约3天完成了: 第一 ...
- HDU1253 胜利大逃亡(BFS) 2016-07-24 13:41 67人阅读 评论(0) 收藏
胜利大逃亡 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示 ...
随机推荐
- redhat 6.7 安装nvidia显卡驱动时出现的问题
一.给Redhat装Nvidia驱动时,出现类似ERROR: The Nouveau kernel driver is currently in use by your system. 的错误,这是应 ...
- 数组 splice 方法
splice 是万能的吗? 不知道,至少他有三种功能 splice的三种功能,减去,增加,替换 第一种减去 var s=[1,2,3,4,5,6]; s.splice(2,2); console.lo ...
- lcd 图片
硬件平台:mini2440 软件环境:UCOS2 .ADS1.2 . LCD彩色图片转换工具BMP_to_H工具bmp2h LCD彩色图片转换工具BMP_to_H工具文件夹下的使用说明 在S3C241 ...
- ServiceController1
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 20145207 《Java程序设计》第10周学习总结
前言: 最后一篇java博客好激动啊..不过猜猜我在干什么?没错,安虚拟机,唉!紧接着又是一大波信安系统的博客,真开心~好啦边敲博客,边装虚拟机. 教材知识汇总 13.1 网络概述 13.1.1计 ...
- 常见的appbug(转)
移动App Bug的影响是用户体验差.App的商店评级下降.用户换用竞争对手的App,声誉和信誉损失.最后销售量减少,如果它是一个付费App的话. 移动App测试与传统台式机测试相比有一定的复杂性.这 ...
- nginx的基本配置和虚拟主机的配置
在Nginx配置文件(nginx.conf)中,一个最简化的虚拟主机配置代码如下: 跟Apache -样,Nginx也可以配置多种类型的虚拟圭机:一是基于IP的虚拟主机,二是基于域名的虚拟主机,三是基 ...
- 数据库中is null(is not null)与=null(!=null)的区别
在标准SQL语言(ANIS SQL)SQL-92规定的Null值的比较取值结果都为False,既Null=Null取值也是False.NULL在这里是一种未知值,千变万化的变量,不是“空”这一个定值! ...
- POJ 3243 Clever Y(离散对数-拓展小步大步算法)
Description Little Y finds there is a very interesting formula in mathematics: XY mod Z = K Given X, ...
- AMBA interconnector PL301(一)
HPM(High-Performance Matrix)是一个自生成的AMBA3 bus subsystem. 由一个AXI bus matrix,Frequency Conversion Compo ...