C++简单练习

本文介绍了一种C++编程练习,要求定义一个ARRAR类,对一维整型数组进行排序,排序规则是根据去掉最高位后的数值大小。作者通过分析如何确定数组元素的位数,并使用取余操作实现了这一功能,最终在冒泡排序中应用该方法。
摘要由CSDN通过智能技术生成

题目:

        试定义类ARRAR,将一维整型数组中个元素进行排列,排序的方法是:根据去掉最高位数字后余下的数值按从小到大的顺序进行排列,最后显示排序后的原始数据。例如,数组{2035,134,4029},去掉最高位后得到的数组{35,34,29},排序{29,34,35},最终输出的结果为{4029,134,2035}。


思路:

以下是我的思路,如果有不同意见或看法,欢迎探讨

首先我们知道,int类型能存储 -2^16到2^16大小的数,最高位有可能是个位十位百位千位或者万位,比如123最高位是百位,1234最高位是千位,分差去掉最高位后得到的分别是23和234,显然234比23大,但如果是123和1022比呢,它两去掉最高位后得23和22,那最终的排序就是1022在前,123在后,因为22比23小。

那么问题来了,怎么得到除去最高位后的数值呢?(那肯定是取余啊,这还用想吗)但我发现一个问题,比如1234是对1000取余得234,就是去掉最高位后得到的数值,但如果数组里有其他位数的对1000取余就错了,那么怎么判断它有多少位呢?于是我想了一个方法

定义一个无符号整型数组num存储1,10,100,1000,10000,100000,......,然后拿题目给的数组中的元素对num数组中的元素逐个取余,如果第 i 次取余后的结果等于它本身,那么它的的位数就是 i-1 ,比如1234逐个对num中的元素取余,

1234%1=0ÿ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值