排序算法

时间:2020-09-21 09:41:10   收藏:0   阅读:45

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 }
View Code

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

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!