2Y - sort
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
Hint
请用VC/VC++提交 // 不能用选择排序Time Limit Exceeded,最后用了希尔排序
#include<stdio.h>
int n, m, a[]; void Sort(int a[], int len)
{
int i, j, k, gap, temp;
for(gap=len/; gap>; gap/=)
{
for(i=gap; i<len; i++)
{
temp=a[i];
for(j=i-gap; j>=&&temp>a[j]; j-=gap)
{
a[j+gap]=a[j];
}
a[j+gap]=temp;
}
}
} int main()
{
int i;
while(scanf("%d %d", &n, &m)!=EOF)
{
for(i=;i<n;i++)
scanf("%d", &a[i]);
Sort(a, n);
for(i=;i<m;i++)
{
if(i==m-) printf("%d\n", a[i]);
else printf("%d ", a[i]);
}
}
return ;
}
AC
// 关于希尔排序的理解参考:
https://blog.csdn.net/weixin_37818081/article/details/79202115
https://www.cnblogs.com/daohuoren/p/6614766.html// 附上代码
// 默认从小到大排序
void selc_sort(int a[], int len);
void shell_sort(int a[], int len); void selc_sort(int a[], int len)
{
int i, j, t, min;
for(i=;i<len-;i++)
{
min=i;
for(j=i+;j<len;j++)
if(a[min]>a[j]) min=j;
if(min!=i)
{ t=a[i]; a[i]=a[min]; a[min]=t; }
}
} void shell_sort(int a[], int len)
{
int i, j, gap, t;
for(gap=len/; gap>; gap/=)
for(i=gap; i<len; i++)
for(j=i;j-gap>=&&a[j]<a[j-gap];j-=gap)
{ t=a[j-gap]; a[j-gap]=a[j]; a[j]=t; }
}
sort.h
2Y - sort的更多相关文章
- stl sort和qsort的使用
好不容易使用了下stl的qsort函数,顺便和sort函数一起总结下: 很多时候我们都需要用到排序. 例如: 1 #include <iostream> #include <algo ...
- SED总结, mac上要加备份文件名,sort命令和对中文的处理
使用sed批量改文件名 Sed批量去拓展名 |- dev.gb.conll06.raw |- test.gb.conll06.raw |- train.gb.conll06.raw 想要去掉其中的后缀 ...
- 文本处理命令(sort+uniq+cut+tr+wc)+三剑客之sed
目录 文本处理命令+三剑客之sed 一.文本处理命令 1.排序命令 sort 2.检查/删除命令 uniq 3. cut 显示特定部分命令 4. 替换或删除命令 tr 5.统计 计算数字命令 wc 二 ...
- 11、Linux基础--sort、uniq、cut、tr、wc、流处理工具sed
笔记 1.晨考 1.写出过滤手机号的正则表达式 1[0-9]{10} 2.写出过滤邮箱的正则表达式 chenyang@123.com [a-zA-Z0-9-_]+@[a-z0-9]+\.(com|cn ...
- [算法]——归并排序(Merge Sort)
归并排序(Merge Sort)与快速排序思想类似:将待排序数据分成两部分,继续将两个子部分进行递归的归并排序:然后将已经有序的两个子部分进行合并,最终完成排序.其时间复杂度与快速排序均为O(nlog ...
- [算法]——快速排序(Quick Sort)
顾名思义,快速排序(quick sort)速度十分快,时间复杂度为O(nlogn).虽然从此角度讲,也有很多排序算法如归并排序.堆排序甚至希尔排序等,都能达到如此快速,但是快速排序使用更加广泛,以至于 ...
- shell之sort命令
1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出. [rocrocket@rocrocket progr ...
- 详细解说 STL 排序(Sort)
0 前言: STL,为什么你必须掌握 对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算 ...
- SQL Tuning 基础概述06 - 表的关联方式:Nested Loops Join,Merge Sort Join & Hash Join
nested loops join(嵌套循环) 驱动表返回几条结果集,被驱动表访问多少次,有驱动顺序,无须排序,无任何限制. 驱动表限制条件有索引,被驱动表连接条件有索引. hints:use_n ...
随机推荐
- C# DataTable To Entities
原地址忘了,修改过了一下. new: public static class DataTableEntityInteroperate { public static List<T> ToE ...
- 文字在线转图片二维码的公用API接口
在线生成网址二维码的API接口: 1.百度网盘(可使用https) http://pan.baidu.com/share/qrcode?w=150&h=150&url=ht ...
- Memory Controller
1.S3C6410 地址空间 For memory at the table details 2. SDRAM图解 3. SDRAM 芯片容量计算: L_BANK 数目 * 一个 L_BANK 中的单 ...
- (转载)jenkins 安装 SVN Publisher 后向 svn 提交代码报错: E170001: Authentication required for...
问题描写叙述 安装并启动 jenkins 后,加入了 SVN Publisher 插件,然后在构建任务的“构建后操作”操作中加入了“Publish to Subversion repository”相 ...
- 学习-HTML5
@@ 学习HTML5发现对我们开发工作者来说要方便很多,它现在还在发展阶段,在未来肯定会是主流. 我们知道HTML5目的是取代HTML4.01和XHTML1.0标准,他希望能够减少互联网富应用(RIA ...
- 2017面向对象程序设计(JAVA)第3周学习指导及要求(2017.9.6-2017.9.12)
学习目标 掌握类与对象的基础概念,理解类与对象的关系: 掌握对象与对象变量的关系: 掌握预定义类的基本使用方法,熟悉Math类.String类.math类.Scanner类.LocalDate类的常用 ...
- java.security.MessageDigest (1)
我们知道,编程中数据的传输,保存,为了考虑安全性的问题,需要将数据进行加密.我们拿数据库做例子.如果一个用户注册系统的数据库,没有对用户的信息进行保存,如,我去页面注册,输入"Vicky&q ...
- hashcode() equals()
介绍一. hashCode()方法和equal()方法的作用其实一样,在Java里都是用来对比两个对象是否相等一致,那么equal()既然已经能实现对比的功能了,为什么还要hashCode()呢? ...
- yum update 自动忽略内核更新
系统每天凌晨 3 点自动执行 yum update 任务 但升级内核后,会出现下面情况 一些编译软件需要内核模块才能够被调用, 而内核模块需要与当前版本内核编译后才能够使用, 假设内核升级后,之前软件 ...
- day31 粘包问题
TCP粘包问题 cmd客户端代码 import socket import struct import socket import json c = socket.socket() c.connect ...