ALDS1_2_C:Stable Sort

2023-05-16

题目链接:ALDS1_2_C:Stable Sort

题目概要:

扑克牌中存在数字相同而花色不同的情况,该题需要利用扑克牌这一特性来比较两种排序:冒泡排序、选择排序(题中给出伪代码)的稳定性。在《挑战程序设计竞赛》中,书中给出的参考答案默认了冒泡排序是稳定的,显然该代码在比较任意两种排序算法时,无法得出客观结果,这里我给出一种能比骄傲任意排序算法稳定性的算法,在AOJ上能够AC。

代码思路:

该题所要解决的关键问题是,如何相同数字(Value)不同花色(Suit)的牌,在排序前后的相对位置是否改变,若改变则不稳定,不改变则稳定。显然用暴力循环来判断容易超出题目限制,我的方法是,构造一个新的数组first[],first[i]表示数字为i的牌第一次出现的花色,由初始牌组构造一个firstA[],排序后的牌组再次构造firstB[],最后比较两数组是否相同即可。

代码如下:

#include<stdio.h>
#include<iostream>
using namespace std;

char firstA[36], firstB[36], firstS[36];//初始化first数组:原始牌组、B种排序、S种排序

struct Card
{
	int value;
	char suit;
}A[100], S[100], B[100];//牌组数组

void check(char first[], Card C[], int n)//利用牌组数组生成first数组函数
{
	for (int i = 0; i < n; i++)
	{
		int value = C[i].value;
		if (first[value] == 0) first[value] = C[i].suit;
	}
}

void BubbleSort(int n, Card A[])//冒泡排序算法
{
	for (int i = 0; i < n; i++)
	{
		for(int j = n-1; j > i; j--)
			if (A[j].value < A[j - 1].value)
			{
				Card t = A[j];
				A[j] = A[j - 1];
				A[j - 1] = t;
			}
	}
}

void SelectionSort(int n, Card A[])//选择排序算法
{
	for (int i = 0; i < n; i++)
	{
		int minj = i;
		for (int j = i; j < n; j++)
		{
			if (A[j].value < A[minj].value) minj = j;
		}
		Card t = A[i];
		A[i] = A[minj];
		A[minj] = t;
	}
}

void Print(Card A[], int n)//输出牌组算法
{
	for (int i = 0; i < n; i++)
	{
		if (i) cout << ' ';
		cout << A[i].suit << A[i].value;
	}
	printf("\n");
}

int main()
{
	int n;
	cin >> n;
	for (int i = 0; i < n; i++)//读入牌组
	{
		char s[5] = {};
		cin >> s;
		A[i].suit = s[0];
		A[i].value = s[1]-48;
	}
	copy(A, A+100, B);
	copy(A, A+100, S);
	BubbleSort(n, B);
	SelectionSort(n, S);
	check(firstA, A, n);//生成first数组
	check(firstB, B, n);
	check(firstS, S, n);
	int flagB = 1, flagS = 1;//是否稳定标识符
	for (int i = 0; i < n; i++)
	{
		if(flagB)
			if (firstB[i] != firstA[i]) flagB = 0;
		if (flagS)
			if (firstS[i] != firstA[i]) flagS = 0;
	}
	Print(B, n);
	if (flagB) cout << "Stable" << endl;
	else cout << "Not stable" << endl;
	Print(S, n);
	if (flagS) cout << "Stable" << endl;
	else cout << "Not stable" << endl;
	return 0;
}

代码很烂,还有很多可以改进的地方,欢迎讨论!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ALDS1_2_C:Stable Sort 的相关文章

  • STL list remove和sort函数

    include lt iostream gt include lt list gt include lt iterator gt using namespace std bool cmp int a int b return a gt b
  • AI画图 Ubuntu 20.04.5 LTS x86_64 Docker stable diffusion webui 及 http api接口

    资源 Docker镜像 docker pull darkroot1234 ayanami latest 参考地址 xff1a docker一键运行stable diffusion webui xff0c 常用插件和功能完备 xff0c 获得
  • Collections.sort和Arrays.sort在jdk1.6和jdk1.7中区别

    1 写这边文章的原因 xff1a 最近在线上产品环境发现了部分用户数据返回排序问题 xff08 和之前理想中的排序不太一样 xff09 xff0c 由于服务器是集群配置 xff0c 猜测肯定是某一台排序服务出了问题 xff08 之前工作中也
  • 浅谈C/C++排序函数中cmp()比较函数的写法(qsort sort函数)

    转自 http blog csdn net lionel d article details 41746135 首先 xff0c 我们来谈谈大名鼎鼎的void qsort void base int nelem int width int
  • Stable Diffusion 本地部署教程不完全指南

    ChatGPT免费体验入口网址 http chat xutongbao top 参考链接 xff1a ERROR Could not find a version that satisfies the requirement torch 6
  • STL std::sort 源码分析

    转载自http feihu me blog 2014 sgi std sort 最近在看sort源码 xff0c 看到这篇博文很好 xff0c 转发作为记录 xff0c 转载侵权联系我删除 背景 在校期间 xff0c 为了掌握这些排序算法
  • stable diffusion的使用

    文章目录 1 文生图1 1 mountains and trees and gree1 2 three dogs1 3 cats1 4 three lovely cats1 5 beautiful girl1 6 机器猫1 7 卡通图像生成
  • 数据结构实验之排序三:bucket sort

    数据结构实验之排序三 xff1a bucket sort 作为桶排序的典型例题 xff0c 我们完全可以按照桶排序的思想来做这个题 但是本题完全不需要用太多的空间去换时间 xff0c 只需要一个空间为101的一维数组就好 Problem D
  • Insertion Sort List

    Sort a linked list using insertion sort 对一个线性链表排序 xff0c 维护两对指针即可 ListNode insertionSortList ListNode head if head return
  • ALDS1_2_C:Stable Sort

    题目链接 xff1a ALDS1 2 C Stable Sort 题目概要 xff1a 扑克牌中存在数字相同而花色不同的情况 xff0c 该题需要利用扑克牌这一特性来比较两种排序 xff1a 冒泡排序 选择排序 xff08 题中给出伪代码
  • mongodb: "Overflow sort stage buffered data usage of 33557904 bytes exceeds internal limit of 33554"

    mongodb报错 xff1a Overflow sort stage buffered data usage of 33557904 bytes exceeds internal limit of 33554432 bytes 这个问题是
  • 【Java基础】Arrays.sort()使用示例

    狗有名字 体重和年龄3个属性 xff1a span class token keyword public span span class token keyword class span span class token class nam
  • quick sort(c++)以及k选取

    include lt iostream gt include lt vector gt using rank 61 int using namespace std int dash 61 0 int swap vector lt int g
  • javascript中的sort()方法

    现在在学习javascript中 xff0c 发现sort 函数是有点奇怪的东西 xff08 可能是本人水平的问题 xff01 xff09 xff0c 于是就在这里记录一下自己找到的东西吧 sort 这个方法的参数很奇怪 xff0c 必须是
  • 909422229_Jeesite 列表数据自定义排序规则

    技术交流群 958923746 有学习视频 文档等 1 列表排序 假排序哦 非数据库排序 page是查询到的列表数据 Collections sort page getList new Comparator
  • python中的sort的用法

    一 sort的两种用法 1 a sort 对原列表进行原址排序 原址排序的意思是原列表被改变了 排序的规则 数字 字符串按照ASCII 中文按照unicode从小到大排序 a 2 3 6 7 1 a sort print a 1 2 3 6
  • 关于【Stable-Diffusion WEBUI】方方面面研究(内容索引)

    文章目录 零 前言 0 1 我的相关文章索引 0 2 本篇内容阅读提示 一 绘图 1 1 模型 1 2 绘图方式 文生图 1 3 插件 可选附加网络 LoRA插件 Additional networks 1 4 插件 ControlNet
  • Linux shell 从文件中随机选择内容

    如果需要从文件中随机选择一定行的内容 可以借助sort 命令 如下 使用sort 命令将文件随机排序 选择前100行 sort random sort file head n 100
  • 简单分析 C 语言的 qsort() 源码

    简单分析 C 语言的 qsort 源码 stdlib h 是使用 C 语言需要引入的库 在系统文件下可以搜索到这个文件夹 在里面可以看到有一个 qsort 文件用编译器或者记事本打开就能看到里面的源码了 单从文件名看 qsort 采用的是快
  • R语言排序函数sort(),rank(),order()

    转载地址 http blog sina com cn s blog 6caea8bf0100spe9 html 在R中 和排序相关的函数主要有三个 sort rank order sort x 是对向量x进行排序 返回值排序后的数值向量 r

随机推荐

  • 计算ip地址是否在同一网段

    一 要判断两个IP地址是不是在同一个网段 xff0c 就将它们的IP地址分别与子网掩码做与运算 xff0c 得到的结果 gt 网络号 xff0c 如果网络号相同 xff0c 就在同一子网 xff0c 否则 xff0c 不在同一子网 例 xf
  • 面试官再问你 HashMap 底层原理,就把这篇文章甩给他看

    前言 HashMap 源码和底层原理在现在面试中是必问的 因此 xff0c 我们非常有必要搞清楚它的底层实现和思想 xff0c 才能在面试中对答如流 xff0c 跟面试官大战三百回合 文章较长 xff0c 介绍了很多原理性的问题 xff0c
  • Java核心技术读书笔记——集合

    本笔记为读 Java核心技术 卷1 第9版 而记录 目录 1 集合接口与实现相互分离1 1Java类库中集合接口和迭代器接口1 2泛型实用方法 2 具体的集合2 1链表2 2数组列表2 3散列表2 4树集2 5对象的比较2 6队列与双端队列
  • #每天一篇论文#(213/365) Joint 2D-3D-Semantic Data for Indoor Scene Understanding 结合2D-3D室内语义数据场景理解

    Joint 2D 3D Semantic Data for Indoor Scene Understanding http 3Dsemantics stanford edu A 摘要 本文提供了一个大型室内空间的数据集 xff0c 它提供了
  • 我心中的AI

    首先说一下我的身份 xff0c 一个刚刚踏入IT行业的年轻小伙 xff0c 相信在坐的大家心中都会有一个小小的梦想 拥有一个 大黄蜂 xff0c 这是我从事这个职业的原因所在 人工智能从诞生以来 xff0c 理论和技术日益成熟 xff0c
  • 2021-09-04 **mininet+flowvisor+floodlight实现网络切片功能**

    mininet 43 flowvisor 43 floodlight实现网络切片功能 这个项目所使用的软件flowvisor 和floodlight 都已经过时了网上能找到的资料太少了 xff0c 整个项目搭建过程中遇到的坑太多了 花了大量
  • CentOS 6.5 时间同步

    1 检查是否安装ntpdate rpm qa grep ntp 有返回说明已经安装 xff0c 若无返回 xff0c 执行安装命令进行安装 2 安装ntpdate yum install y ntp ntpdate 3 修改时区 vi et
  • 在linux安装elasticsearch-7.6.2 所遇到的坑

    64 TOC在linux安装elasticsearch 7 6 2 所遇到的坑 问题描述 刚接触学习elasticsearch xff0c 在linux环境安装就遇到了一些问题 运行角色问题 elasticsearch不建议使用root账号
  • freeRTOS多任务启动流程和源码分析

    最近学习白问网韦东山老师在B站开源的freeRTOS课程 xff0c 网址 xff1a 韦东山直播公开课 xff1a RTOS实战项目之实现多任务系统 第1节 xff1a 裸机程序框架和缺陷 哔哩哔哩 bilibili和7天物联网训练营 第
  • mkdir 创建目录命令

    mkdir命令 mkdir 命令简介 mkdir命令用来创建指定的名称的目录 xff0c 要求创建用户在当前目录权限 xff0c 并且制定的目录名不能是当前目录中已有的目录 命令格式 mkdir 选项 目录 命令参数 m mode 61 模
  • UCOS-II任务间通信(信号量、邮箱、消息队列)

    保护任务之间的共享数据和提供任务之间的通讯方法 xff1a 利用宏OS ENTER CRITICAL 和OS EXIT CRITICAL 来关闭和打开中断 xff0c 这可以用于多任务或者任务和ISR共享某些数据时可以采用这种方法 利用OS
  • 高考到程序员,从娇惯到耐艹

    现在的我刚好是走出校门没两天 xff0c 踏入it行业的程序员 此刻的心情 xff0c 有与挚友分别的不舍 xff0c 有悔恨当初的颓废 xff0c 还有一种提到望月的闯劲儿 总之心理活动错综复杂 xff0c 和高考那会儿玩世不恭的我大不相
  • AI浪潮下需要思考的事

    一 AI的意义 AI xff0c 即ArtificialIntelligence的缩写 xff0c 它是研究如何以人类的智能行为以及思考方式来解决问题的计算机科学的一个分支 目前主要研究的领域包括语音识别 图像识别 自然语言处理以及在某一特
  • Hive(二) -- ddl

    Hive支持标准SQL xff0c 同时又有自己的特点 xff0c 属于方言版SQL Hive的ddl主要包含对于数据库和表的查询 创建和删除 dml包含数据查询和插入 xff0c 其中插入有load和insert两种方式 xff0c 针对
  • autolisp的各种框(DCL)

    一 DCL是什么 前面的事情 xff0c 是通过在命令行输入参数来实现某个指令的 xff0c 而DCL是通过用户界面来实现交互的 下图就是一个典型的DCL 二 DCL怎么用 xff1f 首先说明 xff0c DCL不像lisp xff0c
  • 在hbase shell中过滤器的简单使用

    在hbase shell中查询数据 xff0c 可以在hbase shell中直接使用过滤器 xff1a span class hljs comment hbase shell span gt scan span class hljs st
  • kswapd0占用CPU过高问题处理

    项目场景 xff1a kswapd0占用CPU过高 xff0c 严重影响服务器及虚拟机的使用 问题描述 最近同事反应工作站上的虚拟机太慢了 到虚拟机上看了一下 xff0c 资料占得很满 xff0c 一点很长时间没反应 xff0c 卡得不行
  • QQ新版表情序号及对应

    在学习QQ机器人发送消息接口时遇到了新版表情发送问题 xff0c 以及QQ新版表情序号跟面板中不是完全对应的 xff0c 于是遍历了0 500号表情 xff0c 作一一输出 xff0c 得到了大部分表情的序号及对照如下 xff1a 表情使用
  • Java判断String字符串是否相等时容易出现的问题

    在程序设计中 xff0c 我们经常需要判断字符串是否相等 xff0c 如if a 61 61 b xff0c 但在java中 xff0c a和b两个字符串值相等 xff0c 但有时会判断出不相等的情况 例如 xff1a span class
  • ALDS1_2_C:Stable Sort

    题目链接 xff1a ALDS1 2 C Stable Sort 题目概要 xff1a 扑克牌中存在数字相同而花色不同的情况 xff0c 该题需要利用扑克牌这一特性来比较两种排序 xff1a 冒泡排序 选择排序 xff08 题中给出伪代码