当前位置: 首页 > news >正文

数据结构之内部排序

目录

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 点赞狂魔 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&a…...

软考高级备考-系统架构师(机考后新版教材的备考过程与资料分享)

软考高级-系统架构设计师 考试复盘1.考试结果2.备考计划3.个人心得 资料分享 考试复盘 1.考试结果 三科压线过&#xff0c;真是太太太太太太太幸运了。上天对我如此眷顾&#xff0c;那不得不分享下我的备考过程以及一些备考资料&#xff0c;帮助更多小伙伴通过考试。 2.备考…...

Spring Boot 整合kafka:生产者ack机制和消费者AckMode消费模式、手动提交ACK

目录 生产者ack机制消费者ack模式手动提交ACK 生产者ack机制 Kafka 生产者的 ACK 机制指的是生产者在发送消息后&#xff0c;对消息副本的确认机制。ACK 机制可以帮助生产者确保消息被成功写入 Kafka 集群中的多个副本&#xff0c;并在需要时获取确认信息。 Kafka 提供了三种…...

Java+Swing: 主界面组件布局 整理9

说明&#xff1a;这篇博客是在上一篇的基础上的&#xff0c;因为上一篇已经将界面的框架搭好了&#xff0c;这篇主要是将里面的组件完善。 分为三个部分&#xff0c;北边的组件、中间的组件、南边的组件 // 放置北边的组件layoutNorth(contentPane);// 放置中间的 Jtablelayou…...

pytorch:YOLOV1的pytorch实现

pytorch&#xff1a;YOLOV1的pytorch实现 注&#xff1a;本篇仅为学习记录、学习笔记&#xff0c;请谨慎参考&#xff0c;如果有错误请评论指出。 参考&#xff1a; 动手学习深度学习pytorch版——从零开始实现YOLOv1 目标检测模型YOLO-V1损失函数详解 3.1 YOLO系列理论合集(Y…...

YOLOv8配置文件yolov8.yaml解读

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 位置 该文件的位置位于 ./ultralytics/cfg/models/v8/yolov8.yaml 模型参数配置 # Parameters nc: 80 # number of classes scales: #…...

4-Tornado高并发原理

核心原理就是协程epoll事件循环&#xff0c;再使用协程之后&#xff0c;开销是特别的小&#xff0c;那具体如何提供高并发的呢&#xff1f; 异步非阻塞IO 这意味我们整套开发的模式不在与原来一样&#xff0c;正因为不再一样&#xff0c;所以有时我们在理解代码时就有可能会比…...

基于以太坊的智能合约开发Solidity(事件日志篇)

//声明版本号&#xff08;程序中的版本号要和编译器版本号一致&#xff09; 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 可以分析&#xff1a;correlation 计算两个脑区的相关性 静息态实验简单functional 成功的实验能看到激活区不成功的实验&#xff1a;比如被试头动太大&#xff0c;不是健康的被试 Spontaneous brain…...

Flutter笔记:滑块及其实现分析1

Flutter笔记 滑块分析1 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/134900784 本文从设计角度&#…...

【React Hooks】useReducer()

useReducer 的三个参数是可选的&#xff0c;默认就是initialState&#xff0c;如果在调用的时候传递第三个参数那么他就会改变为你传递的参数&#xff0c;实际开发不建议这样写。会增加代码的不可读性。 使用方法&#xff1a; 必须将 useReducer 的第一个参数&#xff08;函数…...

如何把kubernetes pod中的文件拷贝到宿主机上或者把宿主机上文件拷贝到kubernetes pod中

1. 创建一个 Kubernetes Pod 首先&#xff0c;下面是一个示例Pod的定义文件&#xff08;pod.yaml&#xff09;&#xff1a; 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 中创建的&#xff0c;这里先贴出创建部分的代码&#xff1a; mCodec mGetCodecBase(name, owner);if (mCodec NULL) {ALOGE("Getting codec base with name %s (owner%s) failed", n…...

TCP单聊和UDP群聊

TCP协议单聊 服务端&#xff1a; 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)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于鲸鱼算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于鲸鱼算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鲸鱼算法4.实验参数设定5.算法结果6.参考文献7.MA…...

TortoiseGit 小乌龟svn客户端软件查看仓库地址

进入代码路径...

uniapp微信小程序分包,小程序分包

前言&#xff0c;都知道我是一个后端开发、所以今天来写一下uniapp。 起因是美工给我的切图太大&#xff0c;微信小程序不让了&#xff0c;在网上找了一大堆分包的文章&#xff0c;我心思我照着写的啊&#xff0c;怎么就一直报错呢&#xff1f; 错误原因 tabBar的页面被我放在分…...

『Linux升级路』进度条小程序

一、预备知识 在编写『Linux升级路』进度条小程序之前&#xff0c;我们需要了解一些预备知识。本文将详细介绍缓冲区和回车换行的概念。 1.1 缓冲区 缓冲区是计算机内存中的一块区域&#xff0c;用于临时存储数据。在编程中&#xff0c;我们经常使用缓冲区来临时保存数据&am…...

使用rust slint开发桌面应用

安装QT5&#xff0c;过程省略 安装rust&#xff0c;过程省略 创建工程 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. 话题拓展 概念 系统托盘&#xff1a;系统托盘是一种用户界面元素&#xff0c;通常出现在操作系统的任务栏或桌面顶部。它是一个水平的狭长区…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...