数据结构之内部排序
目录
7-1 直接插入排序
输入格式:
输出格式:
输入样例:
输出样例:
7-2 寻找大富翁
输入格式:
输出格式:
输入样例:
输出样例:
7-3 PAT排名汇总
输入格式:
输出格式:
输入样例:
输出样例:
7-4 点赞狂魔
输入格式:
输出格式:
输入样例:
输出样例:
7-5 链式基数排序
输入样例:
输出样例:
7-1 直接插入排序
分数 10
全屏浏览题目
切换布局
作者 黄龙军
单位 绍兴文理学院
给定一个整数序列,请按非递减序输出采用直接插入排序的各趟排序后的结果。
输入格式:
测试数据有多组,处理到文件尾。每组测试数据第一行输入一个整数n(1≤n≤100),第二行输入n个整数。
输出格式:
对于每组测试,输出若干行,每行是一趟排序后的结果,每行的每两个数据之间留一个空格。
输入样例:
4
8 7 2 1
输出样例:
7 8 2 1
2 7 8 1
1 2 7 8
#include <stdio.h>
#define MaxSize 1000
struct SqList {int r[MaxSize + 1];int length;
};
void Read(struct SqList *L, int n) {L->length = n;for (int i = 1; i <= L->length; i++) {scanf("%d", &L->r[i]);}
}
void Print(struct SqList *L) {for (int i = 1; i <= L->length; i++) {if (i > 1) printf(" ");printf("%d", L->r[i]);}printf("\n");
}
void InsertSort(struct SqList *L) {for (int i = 2; i <= L->length; i++) {if (L->r[i] < L->r[i - 1]) {L->r[0] = L->r[i];int j;for (j = i - 1; L->r[0] < L->r[j]; j--)L->r[j + 1] = L->r[j];L->r[j + 1] = L->r[0];}Print(L);}
}
int main() {int n;while (scanf("%d", &n) != EOF) {struct SqList L;Read(&L, n);InsertSort(&L);}return 0;
}
7-2 寻找大富翁
分数 25
全屏浏览题目
切换布局
作者 陈越
单位 浙江大学
胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人。假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁。
输入格式:
输入首先给出两个正整数N(≤106)和M(≤10),其中N为总人数,M为需要找出的大富翁数;接下来一行给出N个人的个人资产值,以百万元为单位,为不超过长整型范围的整数。数字间以空格分隔。
输出格式:
在一行内按非递增顺序输出资产排前M位的大富翁的个人资产值。数字间以空格分隔,但结尾不得有多余空格。
输入样例:
8 3
8 12 7 3 20 9 5 18
输出样例:
20 18 12
#include<stdio.h>
int main(){int n,m;int a[1000000];scanf("%d %d",&n,&m);for(int i=0;i<n;i++){scanf("%d",&a[i]);}int flag=0;int t;for(int p=n-1;p>=0;p--){flag=0;for(int i=0;i<p;i++){if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;flag=1;}}if(flag==0) break;}if(m>n){for(int i=n-1;i>=1;i--){printf("%d ",a[i]);}printf("%d",a[0]);}else{for(int i=n-1;i>n-m;i--){printf("%d ",a[i]);}printf("%d",a[n-m]);}
}
7-3 PAT排名汇总
分数 25
全屏浏览题目
切换布局
作者 陈越
单位 浙江大学
计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序设计人才,为企业选拔人才提供参考标准(网址http://www.patest.cn)。
每次考试会在若干个不同的考点同时举行,每个考点用局域网,产生本考点的成绩。考试结束后,各个考点的成绩将即刻汇总成一张总的排名表。
现在就请你写一个程序自动归并各个考点的成绩并生成总排名表。
输入格式:
输入的第一行给出一个正整数N(≤100),代表考点总数。随后给出N个考点的成绩,格式为:首先一行给出正整数K(≤300),代表该考点的考生总数;随后K行,每行给出1个考生的信息,包括考号(由13位整数字组成)和得分(为[0,100]区间内的整数),中间用空格分隔。
输出格式:
首先在第一行里输出考生总数。随后输出汇总的排名表,每个考生的信息占一行,顺序为:考号、最终排名、考点编号、在该考点的排名。其中考点按输入给出的顺序从1到N编号。考生的输出须按最终排名的非递减顺序输出,获得相同分数的考生应有相同名次,并按考号的递增顺序输出。
输入样例:
2
5
1234567890001 95
1234567890005 100
1234567890003 95
1234567890002 77
1234567890004 85
4
1234567890013 65
1234567890011 25
1234567890014 100
1234567890012 85
输出样例:
9
1234567890005 1 1 1
1234567890014 1 2 1
1234567890001 3 1 2
1234567890003 3 1 2
1234567890004 5 1 4
1234567890012 5 2 2
1234567890002 7 1 5
1234567890013 8 2 3
1234567890011 9 2 4
#include <stdio.h>
struct stu
{char id[14]; //考号int score; //分数int kc; //考场
};
struct stu a[30000];
int bigger(const char *s1,const char *s2)
{for(int i=0;i<13;i++)if(s1[i] > s2[i])return 1;else if(s1[i] < s2[i])return 0;return 1;
}
void qsort(int l,int r)
{if(l >= r)return ;int i = l;int j = r;struct stu t = a[l];while(i != j){while(i < j && (a[j].score < t.score || a[j].score == t.score && bigger(a[j].id,t.id)))j--;while(i < j && (a[i].score > t.score || a[i].score == t.score && bigger(t.id,a[i].id)))i++;if(i < j){struct stu s = a[i];a[i] = a[j];a[j] = s;}}a[l] = a[i];a[i] = t;qsort(l,i-1);qsort(i+1,r);return ;
}
void Copy(int *b2,int *b1,int n)
{for(int i=1;i<=n;i++)b2[i] = b1[i];
}
int main()
{int n,j,i,top = 0;scanf("%d",&n);for(i=1;i<=n;i++){int k;scanf("%d",&k);for(j=0;j<k;j++){char id[14];int score;scanf("%s %d",id,&score);a[top].score = score;a[top].kc = i;strcpy(a[top].id,id);top++;}}qsort(0,top-1);int levall = 1,b1[n+1],b2[n+1],score = a[0].score;for(i=1;i<=n;i++)b1[i] = 1,b2[i] = 1;printf("%d\n",top);printf("%s %d %d %d\n",a[0].id,1,a[0].kc,1);int llevall = 1; //上一个总排名levall = 2; //总排名Copy(b2,b1,n);b1[a[0].kc]++; for(i=1;i<top;i++){if(a[i].score == a[i-1].score){printf("%s %d %d %d\n",a[i].id,llevall,a[i].kc,b2[a[i].kc]);levall++;b1[a[i].kc]++;}else{printf("%s %d %d %d\n",a[i].id,levall,a[i].kc,b1[a[i].kc]);llevall = levall;levall++;Copy(b2,b1,n);b1[a[i].kc]++; //考场的排名 }}return 0;
}
7-4 点赞狂魔
分数 25
全屏浏览题目
切换布局
作者 陈越
单位 浙江大学
微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。然而有这么一种人,他们会通过给自己看到的一切内容点赞来狂刷存在感,这种人就被称为“点赞狂魔”。他们点赞的标签非常分散,无法体现出明显的特性。本题就要求你写个程序,通过统计每个人点赞的不同标签的数量,找出前3名点赞狂魔。
输入格式:
输入在第一行给出一个正整数N(≤100),是待统计的用户数。随后N行,每行列出一位用户的点赞标签。格式为“Name K F1⋯FK”,其中Name是不超过8个英文小写字母的非空用户名,1≤K≤1000,Fi(i=1,⋯,K)是特性标签的编号,我们将所有特性标签从 1 到 107 编号。数字间以空格分隔。
输出格式:
统计每个人点赞的不同标签的数量,找出数量最大的前3名,在一行中顺序输出他们的用户名,其间以1个空格分隔,且行末不得有多余空格。如果有并列,则输出标签出现次数平均值最小的那个,题目保证这样的用户没有并列。若不足3人,则用-补齐缺失,例如mike jenny -就表示只有2人。
输入样例:
5
bob 11 101 102 103 104 105 106 107 108 108 107 107
peter 8 1 2 3 4 3 2 5 1
chris 12 1 2 3 4 5 6 7 8 9 1 2 3
john 10 8 7 6 5 4 3 2 1 7 5
jack 9 6 7 8 9 10 11 12 13 14
输出样例:
jack chris john
#include<stdio.h>
typedef struct
{char name[20];int sum; //不同标签总数int num; //点赞总数
}User;
int fact[100000000];
int main()
{int n,k;scanf("%d",&n);User users[100];int facter[100][1001];int i,j;for(i=0;i<n;i++){users[i].sum=0;scanf("%s",users[i].name);scanf("%d",&users[i].num);for(j=0;j<users[i].num;j++){scanf("%d",&facter[i][j]);fact[facter[i][j]]++;if(fact[facter[i][j]]==1)users[i].sum++;}for(j=0;j<users[i].num;j++) //重新归0fact[facter[i][j]]=0;}//进行排序(这边建议使用选择排序)int max;for(i=0;i<n-1;i++){max=i;for(j=i+1;j<n;j++){if(users[max].sum<users[j].sum)max=j;else if(users[max].sum==users[j].sum&&users[max].num>users[j].num)max=j;}User t=users[i];users[i]=users[max];users[max]=t;}if(n<3){for(i=0;i<n-1;i++)printf("%s ",users[i].name);printf("%s",users[n-1].name);for(i=0;i<3-n;i++)printf(" -");}else{printf("%s %s %s",users[0].name,users[1].name,users[2].name);}return 0;
}
7-5 链式基数排序
分数 15
全屏浏览题目
切换布局
作者 王东
单位 贵州师范学院
实现链式基数排序,待排序关键字n满足1≤n≤1000,最大关键字数位≤5。
输入样例:
第一行输入待排序个数n(1≤n≤1000),再输入n个数(n的数位≤5)。
10
278 109 63 930 589 184 505 269 8 83
输出样例:
输出每趟分配-收集后链表中的关键字,趟数为序列中最大值的数位(如样例中930的数位为3),每行结尾有空格。
930 63 83 184 505 278 8 109 589 269
505 8 109 930 63 269 278 83 184 589
8 63 83 109 184 269 278 505 589 930
#include<stdio.h>
struct tong{int a[1000];int sum;//sum指的是存入桶中的数据个数
};
typedef struct tong tong;
int ad[1000];
int findmax(int n){int max=0;int t;int weishu=0;for(int i=0;i<n;i++){weishu=0;t=ad[i];while(t!=0){t=t/10;weishu++;}if(weishu>max)max=weishu;}return max;
}
int main(){int n;int t;tong ts[10];for(int i=0;i<10;i++)ts[i].sum=0;scanf("%d",&n);for(int i=0;i<n;i++)scanf("%d",&ad[i]);//接下来我们要找出最大位数int wei=findmax(n);for(int i=0;i<wei;i++){for(int j=0;j<n;j++){t=ad[j];t=t/pow(10,i);t=t%10;ts[t].a[ts[t].sum++]=ad[j];}//接下来取出桶中数据更新ad数组int n1=0;for(int j=0;j<10;j++){ //10个桶for(int k=0;k<ts[j].sum;k++){ad[n1++]=ts[j].a[k];}}//打印for(int j=0;j<n;j++){printf("%d ",ad[j]);}printf("\n");//进行桶的归0for(int j=0;j<10;j++){//数组没必要更新,反正会覆盖ts[j].sum=0;}}
}
相关文章:
数据结构之内部排序
目录 7-1 直接插入排序 输入格式: 输出格式: 输入样例: 输出样例: 7-2 寻找大富翁 输入格式: 输出格式: 输入样例: 输出样例: 7-3 PAT排名汇总 输入格式: 输出格式: 输入样例: 输出样例: 7-4 点赞狂魔 输入格式: 输出格式: 输入样例&a…...
软考高级备考-系统架构师(机考后新版教材的备考过程与资料分享)
软考高级-系统架构设计师 考试复盘1.考试结果2.备考计划3.个人心得 资料分享 考试复盘 1.考试结果 三科压线过,真是太太太太太太太幸运了。上天对我如此眷顾,那不得不分享下我的备考过程以及一些备考资料,帮助更多小伙伴通过考试。 2.备考…...
Spring Boot 整合kafka:生产者ack机制和消费者AckMode消费模式、手动提交ACK
目录 生产者ack机制消费者ack模式手动提交ACK 生产者ack机制 Kafka 生产者的 ACK 机制指的是生产者在发送消息后,对消息副本的确认机制。ACK 机制可以帮助生产者确保消息被成功写入 Kafka 集群中的多个副本,并在需要时获取确认信息。 Kafka 提供了三种…...
Java+Swing: 主界面组件布局 整理9
说明:这篇博客是在上一篇的基础上的,因为上一篇已经将界面的框架搭好了,这篇主要是将里面的组件完善。 分为三个部分,北边的组件、中间的组件、南边的组件 // 放置北边的组件layoutNorth(contentPane);// 放置中间的 Jtablelayou…...
pytorch:YOLOV1的pytorch实现
pytorch:YOLOV1的pytorch实现 注:本篇仅为学习记录、学习笔记,请谨慎参考,如果有错误请评论指出。 参考: 动手学习深度学习pytorch版——从零开始实现YOLOv1 目标检测模型YOLO-V1损失函数详解 3.1 YOLO系列理论合集(Y…...
YOLOv8配置文件yolov8.yaml解读
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 位置 该文件的位置位于 ./ultralytics/cfg/models/v8/yolov8.yaml 模型参数配置 # Parameters nc: 80 # number of classes scales: #…...
4-Tornado高并发原理
核心原理就是协程epoll事件循环,再使用协程之后,开销是特别的小,那具体如何提供高并发的呢? 异步非阻塞IO 这意味我们整套开发的模式不在与原来一样,正因为不再一样,所以有时我们在理解代码时就有可能会比…...
基于以太坊的智能合约开发Solidity(事件日志篇)
//声明版本号(程序中的版本号要和编译器版本号一致) pragma solidity ^0.5.17; //合约 contract EventTest {//状态变量uint public Variable;//构造函数constructor() public{Variable 100;}event ValueChanged(uint newValue); //事件声明event Log(…...
【BME2112】w11 notes
下周做老鼠实验 group analysis SPM group analysis 数据地址resting state 可以分析:correlation 计算两个脑区的相关性 静息态实验简单functional 成功的实验能看到激活区不成功的实验:比如被试头动太大,不是健康的被试 Spontaneous brain…...
Flutter笔记:滑块及其实现分析1
Flutter笔记 滑块分析1 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/134900784 本文从设计角度&#…...
【React Hooks】useReducer()
useReducer 的三个参数是可选的,默认就是initialState,如果在调用的时候传递第三个参数那么他就会改变为你传递的参数,实际开发不建议这样写。会增加代码的不可读性。 使用方法: 必须将 useReducer 的第一个参数(函数…...
如何把kubernetes pod中的文件拷贝到宿主机上或者把宿主机上文件拷贝到kubernetes pod中
1. 创建一个 Kubernetes Pod 首先,下面是一个示例Pod的定义文件(pod.yaml): cat > nginx.yaml << EOF apiVersion: v1 kind: Pod metadata:name: my-nginx spec:containers:- name: nginximage: nginx EOF kubectl app…...
Android 13 - Media框架(20)- ACodec(二)
这一节开始我们就来学习 ACodec 的实现 1、创建 ACodec ACodec 是在 MediaCodec 中创建的,这里先贴出创建部分的代码: mCodec mGetCodecBase(name, owner);if (mCodec NULL) {ALOGE("Getting codec base with name %s (owner%s) failed", n…...
TCP单聊和UDP群聊
TCP协议单聊 服务端: import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.V…...
智能优化算法应用:基于鲸鱼算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于鲸鱼算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于鲸鱼算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鲸鱼算法4.实验参数设定5.算法结果6.参考文献7.MA…...
TortoiseGit 小乌龟svn客户端软件查看仓库地址
进入代码路径...
uniapp微信小程序分包,小程序分包
前言,都知道我是一个后端开发、所以今天来写一下uniapp。 起因是美工给我的切图太大,微信小程序不让了,在网上找了一大堆分包的文章,我心思我照着写的啊,怎么就一直报错呢? 错误原因 tabBar的页面被我放在分…...
『Linux升级路』进度条小程序
一、预备知识 在编写『Linux升级路』进度条小程序之前,我们需要了解一些预备知识。本文将详细介绍缓冲区和回车换行的概念。 1.1 缓冲区 缓冲区是计算机内存中的一块区域,用于临时存储数据。在编程中,我们经常使用缓冲区来临时保存数据&am…...
使用rust slint开发桌面应用
安装QT5,过程省略 安装rust,过程省略 创建工程 cargo new slint_demo 在cargo.toml添加依赖 [dependencies] slint "1.1.1" [build-dependencies] slint-build "1.1.1" 创建build.rs fn main() {slint_build::compile(&quo…...
Flutter桌面应用程序定义系统托盘Tray
文章目录 概念实现方案1. tray_manager依赖库支持平台实现步骤 2. system_tray依赖库支持平台实现步骤 3. 两种方案对比4. 注意事项5. 话题拓展 概念 系统托盘:系统托盘是一种用户界面元素,通常出现在操作系统的任务栏或桌面顶部。它是一个水平的狭长区…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...
AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)
Name:3ddown Serial:FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名:Axure 序列号:8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...
StarRocks 全面向量化执行引擎深度解析
StarRocks 全面向量化执行引擎深度解析 StarRocks 的向量化执行引擎是其高性能的核心设计,相比传统行式处理引擎(如MySQL),性能可提升 5-10倍。以下是分层拆解: 1. 向量化 vs 传统行式处理 维度行式处理向量化处理数…...
