前面写的几个排序的算法都是对整形的数据进行排序,而我们在日常生活中要处理的东西并不全都是这些整形的数据,还有一些其他的东西,比如对一堆人按照姓氏的前后进行排序,或则是对一些产品按照出产的日期进行排序,等等等等,这些东西都不是我们做排序算法的时候用来做测试的数据类型,但是我们要知道一个理念,就是我们从书上或则是其他的地方知道的常用的排序的方法也就只有那么一些,我们要做的只是稍微改变一下,整形是数据类型,既然是类型,他能对类型进行排序,我们也可以用他来对其他的类型来进行排序,其他的类型当然就包括了我们自己定义的类。只要你规定好排序的要求就OK了。
今天要写的是一个基于前面写的一个插入排序,用它来对自己定义的Person类的对象按照其姓氏的前后顺序进行排序,毫无疑问,我们就要定义一个Person的类,里面当然要有“姓”的属性。还封装了一些其他的方法,包括打印Person对象的信息(displayInfo()),获得Person对象的“姓”(getLastName())代码如下。
package 对象排序; public class Person { /* * lastName 姓 */ private String lastName; /* * FirstName 名 */ private String FirstName; /* * 年龄 */ private int age; /** * 构造方法 * @param lastName 姓 * @param FirstName 名 * @param age 年龄 */ public Person(String lastName,String FirstName,int age) { this.lastName = lastName; this.FirstName = FirstName; this.age = age; } /* * 打印人的信息 */ public void displayInfo() { System.out.print("Last Name: " + lastName); System.out.print(" First Name: " + FirstName); System.out.println(" age : "+ age); } /* * 返回某人的姓 * @return 返回某人的姓 */ public String getLastName() { return lastName; } }
建好了自己定义的类,而且也说明了对象按照姓氏的前后顺序进行排列,下面我们就来完成它,在这里饿哦们调用了接口 Comparable<String> 中的 compareTo方法对姓氏的前后进行比较然后进行交换(比较和交换也就是所有排序算法的核心了),代码有详 细注释:
package 对象排序; public class ObjectInsertSort { /* *定义一个“人”的数组 */ private Person[] pers; /* *记录数组中当前的人数 */ public static int number; /* * 构造函数初始化 *传入max函数,定义了数组的最大值 */ public ObjectInsertSort(int max) { pers = new Person[max]; number = 0; } /** * 向数组中插入一个人的对象 * @param last 传入的姓 * @param first 传入的名 * @param age 传入的年龄 */ public void insertPerson(String last,String first,int age) { pers[number] = new Person(last,first,age); number++; } /* *打印出人数组的信息 */ public void disPlayPInfo() { for( int i = 0; i < number; i++){ pers[i].displayInfo(); // 调用人的打印的方法 } } /* * 排序算法,基于插入排序,并且调用compareTo()方法对字符串的大小进行比较, * 按照首字母A-Z,a-z越来越大,当首字母一样的时候依次往下进行。 * 若s2.compareTo(s1) > 0 则 s1>s2; * 若s2.compareTo(s1) < 0则 s1<s2; * 若s2.compareTo(s1) = 0则 s1=s2; */ public void objectInsertSort() { int out,in; for(out = 1; out < number; out++ ) { Person temp = pers[out]; in = out; while(in > 0 && pers[in-1].getLastName().compareTo(temp.getLastName())>0) { pers[in] = pers[in-1]; --in; } pers[in] = temp; } } public static void main(String[] args) { ObjectInsertSort ois = new ObjectInsertSort(10); ois.insertPerson("Harden", "James", 20); ois.insertPerson("ben", "Laden", 30); ois.insertPerson("Ben", "Laden", 30); ois.insertPerson("Ban", "Laden", 30); ois.insertPerson("Gaiz", "Bill",40); ois.insertPerson("Bush", "Joe", 50); System.out.println("当前的人数为:"+number); System.out.println("没进行排序前:"); ois.disPlayPInfo(); System.out.println("排序后:"); ois.objectInsertSort(); ois.disPlayPInfo(); } }
输入输出结果:
当前的人数为:6 没进行排序前: Last Name: Harden First Name: James age : 20 Last Name: ben First Name: Laden age : 30 Last Name: Ben First Name: Laden age : 30 Last Name: Ban First Name: Laden age : 30 Last Name: Gaiz First Name: Bill age : 40 Last Name: Bush First Name: Joe age : 50 排序后: Last Name: Ban First Name: Laden age : 30 Last Name: Ben First Name: Laden age : 30 Last Name: Bush First Name: Joe age : 50 Last Name: Gaiz First Name: Bill age : 40 Last Name: Harden First Name: James age : 20 Last Name: ben First Name: Laden age : 30
PS :就这样我们完成了对老外的姓氏按照字母表的前后顺序进行的排序,要做的只是多了一个我们自己定义的一个类,还有的就是我们自己给老外取得一些蛋疼的名字,来给我们测试(老外的姓和名是和我大天朝的姓和名恰好是相反的,前面是名,后面是姓,也就是上面的lastName(姓))。
相关推荐
基于C++开发的WEB服务器,支持C/C++、Python、Java等多语言混合开发WEB应用
基于STM8单片机的编程实例,可供参考学习使用,希望对你有所帮助
基于STM8单片机的编程实例,可供参考学习使用,希望对你有所帮助
该靶场仅供学习使用!
电影详情链接 图片链接 影片中文名 影片外国名 评分 评价人数 概况 相关信息 https://movie.douban.com/subject/1292052/ https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg 肖申克的救赎 The Shawshank Redemption 9.7 2529468 希望让人自由 导演: 弗兰克·德拉邦特 Frank Darabont 主演: 蒂姆·罗宾斯 Tim Robbins ... 1994 美国 犯罪 剧情 https://movie.douban.com/subject/1291546/ https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2561716440.jpg 霸王别姬 9.6 1880353 风华绝代 导演: 陈凯歌 Kaige Chen 主演: 张国荣 Leslie Cheung 张丰毅 ........
汽车中间件市场调研报告:2023年全球汽车中间件市场销售额达到了78亿美元 在数字化转型的浪潮中,汽车中间件作为连接硬件与软件的关键桥梁,正引领着汽车行业的新一轮变革。随着全球汽车产业的快速发展,中间件市场规模持续扩大,展现出前所未有的增长潜力。然而,面对复杂多变的市场环境和不断涌现的新技术,企业如何精准把握市场脉搏,实现可持续发展?本文将深入探讨全球及中国汽车中间件市场的现状、趋势及竞争格局,为您揭示咨询的重要性。 市场概况: 根据QYResearch(恒州博智)的统计及预测,2023年全球汽车中间件市场销售额达到了78亿美元(约7803百万美元),预计2030年将达到156亿美元(约15630百万美元),年复合增长率(CAGR)为10.3%(2024-2030)。这一数据不仅彰显了中间件市场的强劲增长动力,也预示着未来巨大的市场空间。 技术创新与趋势: 随着自动驾驶、车联网等技术的不断发展,汽车中间件正面临着前所未有的技术挑战与机遇。新一代中间件需要具备更高的实时性、更低的延迟以及更强的数据处理能力,以满足复杂多变的汽车应用场景。同时,云计算、大数据、人工智能等技术的融合应用,将进
python语言mp3pl爬虫程序代码QZQ
# 小语种字体TTF文件转PNG图片的方法 ## 准备工作 1. 下载python3.9,推荐3.6~3.9,几个依赖包在这个版本运行的好。 2. 下载 FontForge-mingw-w64 ,可自行下载,或从文末打包好的工具包直接使用。 3. 下载需要导出的字体ttf文件,最好先装在本机系统上。 ## 导出方法 1. 把 `tts2png2.py` 文件复制到软件的bin目录下。 2. 修改 `tts2png2.py` 文件中的字体路径,注意Windows用双斜杠。 3. 从bin目录打开终端(管理员模式启动)。 4. 运行脚本 `./ffpython .\tts2png2.py`。
在21世纪的科技浪潮中,人工智能(AI)无疑是最为耀眼的明星之一,它以惊人的速度改变着我们的生活、工作乃至整个社会的运行方式。而在人工智能的广阔领域中,大模型(Large Models)的崛起更是开启了智能技术的新纪元,引领着AI向更加复杂、高效、智能的方向发展。本文将深入探讨人工智能大模型的内涵、技术特点、应用领域以及对未来的影响。 一、人工智能大模型的内涵 人工智能大模型,顾名思义,是指具有庞大参数规模和数据处理能力的AI模型。这些模型通过深度学习算法,在海量数据上进行训练,能够学习到丰富的知识表示和复杂的模式识别能力。与传统的小型或中型模型相比,大模型在理解自然语言、生成高质量内容、进行跨模态信息处理等方面展现出前所未有的优势。它们不仅能够执行特定的任务,如图像识别、语音识别,还能进行创造性的工作,如文本生成、音乐创作,甚至在某些情况下展现出接近或超越人类的智能水平。 二、技术特点 海量数据与高效训练:大模型依赖于庞大的数据集进行训练,这些数据涵盖了广泛的主题和情境,使得模型能够学习到丰富的语义信息和上下文理解能力。同时,高效的训练算法和硬件加速技术,如TPU(Tensor Processing Unit)和GPU,使得大规模模型的训练成为可能。 自注意力机制与Transformer架构:许多领先的大模型采用了Transformer架构,特别是其自注意力机制,这种设计使得模型在处理序列数据时能够捕捉到长距离依赖关系,极大地提高了模型的表达能力和泛化能力。 多任务学习与迁移学习:大模型通常具备多任务学习的能力,即在一次训练中同时学习多个任务,这有助于模型学习到更通用的知识表示。此外,迁移学习使得这些模型能够轻松适应新任务,只需少量额外数据或微调即可。
下垂控制-基于T型三电平逆变器的下垂控制,电压电流双闭环,采用LCL滤波,SPWM调制方式 1.提供simulink仿真源文件 2.提供下垂控制原理与下垂系数计算方法 3.中点平衡控制,电压电流双闭环控制 4.提供参考文献
城市选择器一个仿大众点评的城市快速选择器, 最少只需 一行 代码即可启动城市选择器, 支持页面样式修改,多元化自定义截屏 版本日志V0.4.6优化地理位置设置时有时会设置不成功问题修复其他若干问题修改UI默认主题色V0.4.5修改设置位置信息方式,由之前必须在打开页面之前获取位置信息改为允许用户在打开页面后设置位置信息,具体使用方式见 Step3简化配置项,不需要在AndroidManifest中再注册Activity,并默认隐藏titlebarV0.4.3修复更新数据库表结构后第一次进入会闪退问题V0.4.0数据库表结构修改,增加了高德地图citycode设置gps城市的api略有改动见 Step3V0.3.3紧急修复一个可能导致内存泄漏问题优化提高滑动检索效率隐藏下拉刷新labelV0.3.1在搜索框后面添加一个清空搜索框按钮修复搜索框中输入空格会搜索出全部城市问题修复搜索结果弹出框中文字在不同theme下显示不同颜色问题,现在已统一为黑色其他调用时参数合法性校验V0.3.0简化api调用形式,修改为Rx形式,见操作步骤
慢性病大数据分析处理慢性病项目
Multisim单片机资源单片机C语言程序设计实训100例提取方式是百度网盘分享地址
PMSM永磁同步电机最大转矩电流比MTPA控制仿真,弱磁控制仿真,前馈补偿仿真程序,详细解析教程文档。 这是一份非常完美的仿真文件及详细教程,从仿真效果图看转速、电流及转矩跟随非常稳定。 该算法架构包含如下模块: 1)SVPWM矢量控制模块 2)转速环PI调节器、电流环PI调节器; 3)MTPA调节器; 4)弱磁控制器; 5)前馈补偿; 一份该仿真的算法说明文档,每一步都有详细介绍如何搭建,包括环路参数怎么算,拿来做毕设或者学习都很方便; 几篇参考文献; 一篇作者自己写的算法总结,让你少走弯路; 两个视频;
手绘卡通儿童人物幼儿园教学课件模板
Simulink电动汽车仿真模型(包含行驶阻力模型,工作模式切模型,驾驶员模型,PID控制模块等,NEDC,CLTC工况仿真结果)东西很全
是一款全功能的备份软件,支持增量备份、差异备份、完全备份和同步备份,帮助用户轻松保护关键文件。支持多种存储选项,包括本地硬盘、USB驱动器、网络文件夹、云存储和 FTP 服务器等。 【使用方法】: 1. 下载并安装 Perfect Backup。 2. 打开软件,选择备份类型(增量、差异、完全或同步)。 3. 指定源文件和目标存储位置。 4. 设置备份计划,选择备份频率。 5. 点击“开始备份”,执行备份任务。
基于STM8单片机的编程实例,可供参考学习使用,希望对你有所帮助
资源描述: HTML5实现好看的创意房屋设计公司网页源码,好看的创意房屋设计公司网页源码,创意房屋设计公司网页源码模板,HTML创意房屋设计公司网页源码,内置酷炫的动画,界面干净整洁,页面主题,全方位介绍内容,可以拆分多个想要的页面,可以扩展自己想要的,注释完整,代码规范,各种风格都有,代码上手简单,代码独立,可以直接运行使用。也可直接预览效果。 资源使用: 点击 index.html 直接查看效果