1.冒泡排序(重点)
升序排列的实现思想:
1.将数组中相邻的两个数据元素进行比较,如果前面一个元素比后面的大,就把两者交换位置(一轮比较);
2.然后将上面的操作进行循环(比较n-1轮)。
排列过程如下图所示:
降序排列的实现思想:
1.将数组中相邻的两个数据元素进行比较,如果前面一个元素比后面的小,就把两者交换位置(一轮比较);
2.然后将上面的操作进行循环(比较n-1轮)。
2.2 基本实现
大家要注意,面试时经常会让我们手写冒泡排序和选择排序等算法,你必须牢牢地记住相关的代码实现哦。
public class Demo09 {
这种实现方式比较容易理解,但并不是最优的实现方案,因为这种方案需要比较的次数较多。
我们可以进一步对该方案进行优化,将比较的次数降下来,请继续往下看。
2.选择排序
选择排序升序思路:
1.将当前位置上的数,与它后面的每个数进行比较,选择出最小的那个数,交换到当前位置;
2.循环选择当前位置上的数。
选择排序降序思路:
1.将当前位置上的数,与它后面的每个数进行比较,选择出最大的那个数,交换到当前位置;
2.循环选择当前位置上的数。
2.1 实现案例
以下是以升序的方式实现的选择排序代码,供大家参考。
public class Demo12 {
3.Arrays.sort方法
Arrays工具类主要用于对数组进行排序、查找、填充、比较等的操作,该类存在于java.util包下,所以我们使用的第一步就是要先进行导包: import java.util.Arrays;
其中Arrays.sort()是Arrays类中的一个静态方法,用于对数组进行排序,我们可以直接调用。
该方法有如下几种重载形式:
●sort(T[] a):对指定T型数组按数字升序排序;
●sort(T[] a, int formIndex, int toIndex):对指定T型数组中[formIndex,toIndex)数据按数字升序排序;
●sort(T[] a, Comparator<? supre T> c): 依据比较器对T型数组进行排序;
●sort(T[] a, int formIndex, int toIndex, Comparator<? supre T> c): 依据比较器产生的顺序对T型数组中的[formIndex,toIndex)进行排序。
接下来再给大家设计一个利用Arrays.sort方法实现的排序案例。
public class Demo13 {
当然java数组就可以使用该方法来排序哦!!Arrays.sort()方法使用的是快速排序算法,可以对任意类型的数组进行排序,使用时需要实现Comparable接口或传入Comparator对象。
示例代码:
int[] nums = {5, 2, 9, 1, 5};
Arrays.sort(nums); // 对数组进行排序
如果要对对象数组进行排序,需要实现Comparable接口或传入Comparator对象,示例代码:
class Person implements Comparable{
private String name;
private int age;
// ...省略构造方法和getter/setter方法
@Override
public int compareTo(Person o) {
return this.age - o.age;
}
}
Person[] persons = new Person[3];
persons[0] = new Person("Tom", 20);
persons[1] = new Person("Jerry", 18);
persons[2] = new Person("Mary", 22);
Arrays.sort(persons); // 对Person对象数组按照年龄升序排序
另外,Java中还提供了其他排序算法的实现,例如归并排序、堆排序等,可以使用Collections.sort()方法或自己实现排序算法来实现数组排序。