对于几大传统的排序算法我在前面博客中已经介绍过了,如果有想要了解的同学可以去看这篇博客八大排序:冒泡排序,选择排序,插入排序,堆排序,希尔排序,归并排序,计数排序但是我们在刷题过程中如果题目中没有对排序算法做特别要求,排序只是当前题目的一个小过程的话我们大可不必自己实现以便排序算法,因为Java中已经提供了几个对数据做排序的方法。
用Array.sort()进行排序
Java中对数组类型的数据有Array.sort(),具体如下:
使用上图第一个重载:
//用Java中有的数据类型做数组
public static void main(String[] args) {
int[] array = {
5, 3, 2, 1, 4, 6, 9, 8};
Arrays.sort(array);
System.out.println(Arrays.toString(array));
}
运行结果:
如果用自己的实现类做数组的话因为在排序过程中需要比较两个元素的大小,这个实现类必须实现Comparable接口(这篇博客会用到Comparable和Comparator两个接口,不会的同学请补这篇博客:Java中的Comparable和Comparator到底该怎么用看完就全明白了):
//这是一个自己的实现类Ha,并且这个类实现了Comparable接口,
//意味着同类型对象之间可以进行比较
public class Ha implements Comparable<Ha>{
int haVal;
public Ha(int h ){
haVal = h;
}
@Override
public String toString() {
return
"haVal=" + haVal
;
}
@Override
public int compareTo(Ha o) {
//因为方法是拿当前对象compareTo传入对象o
//所以:
//返回负数表示当前对象比传入对象o小
//返回正数反之
return this.haVal - o.haVal;
}
}
下面构建一个Ha[]数组并对它排序:
public class Demo7 {
public static void main(String[] args) {
//创建几个Ha类型对象
Ha a = new Ha(1);
Ha b = new Ha(2);
Ha c = new Ha(3);
Ha d = new Ha(4);
Ha e =