第一种排序:【冒泡排序】基本数据类型的排序。
【1】最简易的冒泡排序。效率低。因为比较的次数和趟数最多。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
View Code
【2】进行一次优化的冒泡排序。减少每趟的比较次数。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
【3】进行最终的优化。减少比较的趟数和次数
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
break,continu,return的区别:
break---->用于终止break所在的本层循环,对本层循环后边同层相邻的代码无影响,会执行后边的代码。
continu-->用于暂停本次循环,不执行continu后边循环体内的代码,继续下次循环。
return--->用于返回方法。无论多少层循环,无论处于什么位置,一旦执行到return,则方法终止运行。后边的代码,无论本层,还是他层,一概不执行。
第二种排序:引用数据类型的排序。
【A】[内置引用类型(String Date Integer等),自定义引用类型]
实现步骤:(1)实现一个接口。java.lang.Comparable
(2)重写一个方法public int compareTo(Object obj)
(3)返回 0 表示 this=obj
返回 正数 表示this>obj
返回 负数 表示 this<obj
第一种:常用内置类的比较规则
[1]Integer --->首先将两个包装类,转换成基本数据类型。然后进行大小比较。
[2]Character---> 字符类比较规则是:先将两个字符转换成对应的unicode值,然后进行相减。从而比较大小。
[3]String
---->从两个字符串的第一个字符开始,逐个对应字符进行比较,如果遇见字符不同,返回字符的unicode码之差,后边字符不在对比,比较。决定两个字符串的大小。
---->如果一个字符串是另一个子符串的起始子字符串,则进行长度差比较。比如:abc.compareTo(abcde)进行比较,返回-2
[4]Date--->将两个时间都转换成长整形数,然后比较两个数的大小。决定谁大谁小
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
【B】[jdk内置引用类型性,自定义比较规则]
实现步骤:(1)实现一个接口。java.util.Comparator
(2)重写一个方法public int compare(String o1, String o2)
(3)返回 0 表示 o1=o2
返回 正数 表示o1>o2
返回 负数 表示 o1<o2
内置引用类型实现java.lang.Comparable接口定义比较规则和自定义规则实现java.util.Comparator接口的不同之处和区别
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
封装的一个排序工具类,结合了冒泡排序和内置类排序规则和自定义排序规则。代码示范
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
java.util包中有一个Collections工具类对list容器进行排序。测试代码。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)