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

数据结构----排序(3)

1、基数排序

#include <iostream>
using namespace std;const int N = 105;struct node {int len;int data[N];
};int a[N];
int n, k = 0;void map_sort() {node t[11];// 初始化所有桶的长度为0for(int i = 0; i < 10; i++) {  // 修正:桶索引应为0-9t[i].len = 0;}int maxn = -1e9;for(int i = 1; i <= n; i++) {if(a[i] > maxn) {maxn = a[i];}}int num = 1;while(maxn > 0) {k++;// 将元素分配到对应的桶中for(int i = 1; i <= n; i++) {int d = (a[i] / num) % 10;  // 修正:避免变量名冲突t[d].data[t[d].len++] = a[i];}num *= 10;maxn /= 10;// 从桶中收集元素int m = 1;for(int i = 0; i < 10; i++) {  // 修正:桶索引应为0-9for(int j = 0; j < t[i].len; j++) {  // 修正:数组索引从0开始a[m++] = t[i].data[j];}t[i].len = 0;  // 清空桶}// 输出每一轮的结果if(k<3){for(int i=1;i<=n;i++){cout<<a[i]<<" ";}cout<<"\n";}else if(k==3){for(int i=1;i<=n;i++){cout<<a[i]<<" ";}}}
}int main() {cin >> n;for(int i = 1; i <= n; i++) {cin >> a[i];}map_sort();return 0;
}

2、统计工龄

#include<bits/stdc++.h>
using namespace std;
const int N=55;
int a[N];
int n,m;
int main() {cin>>n;for(int i=1;i<=n;i++){cin>>m;a[m]++;}for(int i=0;i<=50;i++){if(a[i]){cout<<i<<":"<<a[i]<<endl;}}return 0;
}

3、PAT排名汇总

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+100;
struct node{string num;  // 考生的学号int score;int pm1;     // 总排名int bh;      // 考点编号int pm2;     // 考点内排名
}b[N],a[N];
int n;bool cmp(node u,node v){if(u.score==v.score){return u.num<v.num;}else{return u.score>v.score;}
}int main(){cin>>n;int cnt=0;  // 总考生数// 处理每个考点for(int i=1;i<=n;i++){int m;cin>>m;// 读取当前考点的考生信息for(int j=1;j<=m;j++){cin>>a[j].num>>a[j].score;a[j].bh=i;  // 记录考点编号}// 考点内排序sort(a+1,a+1+m,cmp);// 计算考点内排名a[1].pm2 = 1;  // 初始化第一个考生的排名for(int j=2;j<=m;j++){if(a[j].score==a[j-1].score){a[j].pm2=a[j-1].pm2;  // 分数相同,排名相同}else{a[j].pm2=j;  // 分数不同,排名为当前位置}}// 将当前考点的考生加入总列表for(int j=1;j<=m;j++){b[++cnt]=a[j];  // 使用前置++确保p从1开始}}// 全局排序sort(b+1,b+cnt+1,cmp);// 计算总排名b[1].pm1 = 1;  // 初始化第一个考生的总排名for(int i=2;i<=cnt;i++){if(b[i].score==b[i-1].score){b[i].pm1=b[i-1].pm1;  // 分数相同,排名相同}else{b[i].pm1=i;  // 分数不同,排名为当前位置}}// 输出结果cout<<cnt<<endl;for(int i=1;i<=cnt;i++){cout<<b[i].num<<" "<<b[i].pm1<<" "<<b[i].bh<<" "<<b[i].pm2<<endl;}return 0;
}

4、抢红包

#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10;
struct node{int num;//编号 int money=0;//收入金额 int sum=0;//抢到红包的个数 
}a[N];
int n;
bool cmp(node u,node v){if(u.money!=v.money){return u.money>v.money;}else{if(u.sum!=v.sum){return u.sum>v.sum;}else{return u.num<v.num;}}
}
int main(){cin>>n;for(int i=1;i<=n;i++){a[i].num=i;int k;cin>>k;for(int j=1;j<=k;j++){int num1;//抢到红包的数量 double money1;//抢到红包的金额 cin>>num1>>money1;a[num1].money+=money1;a[num1].sum++;a[i].money-=money1;}}sort(a+1,a+1+n,cmp);//sort函数排序for(int i=1;i<=n;i++){cout<<a[i].num<<" "<<fixed<<setprecision(2)<<a[i].money/100.0<<"\n";} return 0;
} 

5、二叉树非叶子

#include<bits/stdc++.h>
using namespace std;
const int N=105;
struct node{int value;int left;int right;
}a[N];
int n;
void xianxu(int idx){if(idx==0)return;cout<<a[idx].value<<" ";xianxu(a[idx].left);xianxu(a[idx].right);
}
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i].value>>a[i].left>>a[i].right;}for(int i=1;i<=n;i++){if(a[i].left!=0||a[i].right!=0){a[i].value++;}}xianxu(1);cout<<endl;return 0;
}

6、月饼

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
struct node{double kcl;double zsj;double dj;
}a[N];
int n,d;
bool cmp(node a,node b){return a.dj>b.dj;
}
int main(){cin>>n>>d;for(int i=1;i<=n;i++){cin>>a[i].kcl;}for(int i=1;i<=n;i++){cin>>a[i].zsj;a[i].dj=a[i].zsj/a[i].kcl;}sort(a+1,a+n+1,cmp);double maxprice=0.0;for(int i=1;i<=n&&d>0;i++){if(a[i].kcl<=d){maxprice+=a[i].zsj;d-=a[i].kcl;}else{maxprice+=a[i].dj*d;d=0;}}cout<<fixed<<setprecision(2)<<maxprice<<endl;return 0;
}

7、寻找大富翁

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
long long a[N];
int n,m;
bool cmp(long long a,long long b){return a>b;
}
int main(){cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1,cmp);for(int i=1;i<=m&&i<=n;i++){if(i>1)cout<<" ";cout<<a[i];}return 0;
}

相关文章:

  • 接口联调阶段的移动端调试实践:从实际问题到流程协同(含WebDebugX)
  • MySQL 默认连接数
  • 在 HTTP 请求返回的状态码不为 200 时,重新发送请求
  • 数据库系统概论(十九)详细讲解关系查询处理与查询优化
  • 设计模式-依赖倒置原则(Dependency Inversion Principle, DIP)
  • Spring Boot(九十一):Spring Boot实现防盗链功能
  • WPS 和 office (word/excel/ppt) 找到模板所在位置以及更改模板的方式(公文写作格式要求、字体安装、模板下载)
  • Maven高级学习笔记
  • 常见哈希格式类型及其在CTF与渗透测试中的爆破与伪造策略(PBKDF2、bcrypt...)
  • Spring Boot分布式锁深度优化:彻底解决达梦数据库高并发死锁问题
  • 【C++11】智能指针——unique_ptr, shared_ptr和weak_ptr
  • DBeaver数据库管理工具的简介、下载安装与优化配置
  • 【Dify精讲】第10章:会话管理与上下文保持【知识卡片】
  • Nginx入门篇
  • 【计算机网络】:get与post
  • 基于协同过滤的新高考志愿个性化智能推荐系统前后端讲解
  • 座舱监控系统(In-Cabin Monitoring System,IMS)相关知识
  • Gartner发布终端安全项目路线图:保护终端免受复杂网络攻击
  • 前端项目如何部署为https
  • 每天一个前端小知识 Day 3 - JavaScript 的作用域与闭包
  • 湛江怎么做网站关键词优化/百度推广系统营销平台
  • 大连seo建站公司/漳州网络推广
  • 做网站样式模板/谷歌搜索入口365
  • php做网站主要怎么布局/企业微信营销管理软件
  • 做跨国婚恋网站赚钱吗/湖南关键词网络科技有限公司
  • 为什么要建立网站/西安网站开发制作公司