排序算法
1.简单排序
1.1.冒泡排序
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
1.1.1.需求
排序前:{4,5,6,3,2,1}
排序后:{1,2,3,4,5,6}
1.1.2.排序原理
1. 比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。
2. 对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大
值。
1.1.3.冒泡排序的代码实现
冒泡排序API设计:
名 | Bubble |
构造方法 | Bubble():创建Bubble对象 |
成员方法 | 1.public static void sort(Comparable[] a):对数组内的元素进行排序 2.private static boolean greater(Comparable v,Comparable w):判断v是否大于w 3.private static void exch(Comparable[] a,int i,int j):交换a数组中,索引i和索引j处的值 |

1 /** 2 * 冒泡排序: 3 * 第一层循环控制比较的元素个数 4 * 第二次循环控制需要比较的元素。每比较一次,下一次就少比较一惠 5 */ 6 public class BubbeDemo { 7 8 public static void sort(Comparable[] arr) { 9 //int[] arr ={4,6,8,7,9,2,10,1}; 10 //两层for循环,控制比较的次数 11 for (int i = 0; i < arr.length-1; i++) { 12 for (int j = 0; j <arr.length-1-i ; j++) { 13 //比较大小 14 if (greater(arr[j],arr[j+1])){ 15 //交换数据 16 exchange(arr,j,j+1); 17 } 18 } 19 } 20 } 21 22 //比较大小 23 private static boolean greater(Comparable x,Comparable y){ 24 return x.compareTo(y)>0; 25 } 26 27 //交换数据:元素i与元素j交换位置 28 private static void exchange(Comparable[] a,int i,int j){ 29 Comparable temp; 30 temp = a[i]; 31 a[i]=a[j]; 32 a[j]=temp; 33 } 34 } 35 36 public class BubbleTest { 37 public static void main(String[] args) { 38 Integer[] arr ={4,6,8,7,9,2,10,1}; 39 BubbeDemo.sort(arr); 40 System.out.println(Arrays.toString(arr)); 41 42 Arrays.sort(arr); 43 } 44 45 }
1.2.选择排序
1.3.插入排序
2.高级排序
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
需求:
排序前:{4,5,6,3,2,1}
public void setAge(int age) {
this.age = age;
} @
Override
public String toString() {
return "Student{" +
"username=‘" + username + ‘\‘‘ +
", age=" + age +
‘}‘;
} /
/定义比较规则
@Override
public int compareTo(Student o) {
return this.getAge()-o.getAge();
}
} /
/测试类
public class Test {
public static void main(String[] args) {
Student stu1 = new Student();
stu1.setUsername("zhangsan");
stu1.setAge(17);
Student stu2 = new Student();
stu2.setUsername("lisi");
stu2.setAge(19);
Comparable max = getMax(stu1, stu2);
System.out.println(max);
} /
/测试方法,获取两个元素中的较大值
public static Comparable getMax(Comparable c1,Comparable c2){
int cmp = c1.compareTo(c2);
if (cmp>=0){
return c1;
}else{
return c2;
}
}
}
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
类名 | Bubble |
构造方法 | Bubble():创建Bubble对象 |
成员方法 | 1.public static void sort(Comparable[] a):对数组内的元素进行排序 2.private static boolean greater(Comparable v,Comparable w):判断v是否大于w 3.private static void exch(Comparable[] a,int i,int j):交换a数组中,索引i和索引j处的值 |
排序后:{1,2,3,4,5,6}
排序原理:
1. 比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。
2. 对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大
值
原文:https://www.cnblogs.com/aaaazzzz/p/13703583.html