37、数组排序与搜索算法详解

数组排序与搜索算法详解

1. 对象数组排序

在处理排序问题时,待排序的数据项不仅可以是整数或双精度浮点数等基本数据类型,还可以是对象。对于对象数组的排序,关键在于理解我们要排序的是对象本身,而非数组元素,数组元素仅仅是对象的引用或对象的内存位置。

对象数组的排序是通过排序键来实现的,排序键是对象的一个或多个实例变量。例如,对于电子邮件对象,可以按接收日期、发件人、主题等进行排序。在排序对象时,必须保证对象的完整性。比如,按发件人对电子邮件对象集合进行排序时,我们排序的是电子邮件对象集合,而不是发件人集合。

下面以 Auto 对象的 cars 数组为例,使用插入排序算法进行排序。我们需要确定 Auto 对象的哪个字段(或哪些字段)来决定对象的顺序。假设以 model 作为排序字段,那么比较语句将比较两个对象的 model ,即两个字符串。 String 类的 compareTo 方法用于比较两个字符串的值,如果调用该方法的字符串大于作为参数传递的字符串,则返回一个正数。

以下是修改后的插入排序代码:

/* * Insertion sorts an array of Autos
*      @param arr an array of Autos
*/
public static void insertionSort( Auto [ ] arr )
{ 
  Auto temp;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值