java数据结构与算法(day2)--简单排序

模式:设计api实现api

简单排序

举例(商品排序)

1.1Comparable接口介绍(排序算法更有通用性:对象排序)

创建对象,并且生成豆子。创建Comparable接口

 1 package cn.itcast.algorithm.sort;
 2 
 3 public class Student implements Comparable<Student>{
 4     private String username;
 5     private int age;
 6 
 7     public Student() {
 8     }
 9 
10     public Student(String username, int age) {
11         this.username = username;
12         this.age = age;
13     }
14 
15     /**
16      * 获取
17      * @return username
18      */
19     public String getUsername() {
20         return username;
21     }
22 
23     /**
24      * 设置
25      * @param username
26      */
27     public void setUsername(String username) {
28         this.username = username;
29     }
30 
31     /**
32      * 获取
33      * @return age
34      */
35     public int getAge() {
36         return age;
37     }
38 
39     /**
40      * 设置
41      * @param age
42      */
43     public void setAge(int age) {
44         this.age = age;
45     }
46 
47     public String toString() {
48         return "Student{username = " + username + ", age = " + age + "}";
49     }
50 
51     public int compareTo(Student o){
52         return this.getAge()-o.getAge();
53     }
54 }

实例化对象,创建规则

 1 package cn.itcast.algorithm.text;
 2 
 3 import cn.itcast.algorithm.sort.Student;
 4 
 5 public class TextComparable {
 6     public static void main(String[] args) {
 7 //        创建对象,调用方法测试
 8         Student s1=new Student();
 9         s1.setUsername("李四");
10         s1.setAge(18);
11 
12         Student s2=new Student();
13         s2.setUsername("张三");
14         s2.setAge(20);
15 
16         Comparable max = getMax(s1, s2);
17         System.out.println(max);
18     }
19 
20     public static Comparable getMax(Comparable c1,Comparable c2){
21         int result=c1.compareTo(c2);
22         //判断result的情况
23         if (result>=0){
24             return c1;
25         }else {
26             return c2;
27         }
28     }
29 
30 }

 

1.2 冒泡排序

排序原理:

1)比较相邻的元素,如果前一个元素比后一个大,就交换两个元素的位置。

2)对每一对相邻元素做相同的工作,从第一位元素到结尾最后一位元素。最终最后位置的元素就是最大值。

为什么叫冒泡排序?

冒泡的过程把合适的元素放到合适的位置

 

冒泡排序aip设计:

构造方法:Bubble():创建bubble()对象

成员方法:

1对数组内的元素进行排序

2判断相邻元素大小

3交互元素位置

冒泡排序程序设计:

 

 1 package cn.itcast.algorithm.sort;
 2 
 3 public class Bubble {
 4 
 5     public static void sort(Comparable[] a){
 6         for(int i=a.length-1;i>0;i--){
 7             for(int j=0;j<i;j++){
 8                 //比较索引j和j+1的值
 9                 if (greater(a[j],a[j+1])){
10                     exch(a,j,j+1);
11                 }
12             }
13         }
14 
15     }
16 
17     private static boolean greater(Comparable v, Comparable w){
18 //        int result=v.compareTo(w);
19         return v.compareTo(w)>0;
20 
21     }
22 
23     private static void exch(Comparable[] a,int i, int j){
24 
25         Comparable temp;
26         temp = a[i];
27         a[i]=a[j];
28         a[j]=temp;
29     }
30 }

text

 1 package cn.itcast.algorithm.text;
 2 
 3 import cn.itcast.algorithm.sort.Bubble;
 4 
 5 import java.util.Arrays;
 6 
 7 public class BubbleText {
 8     public static void main(String[] args) {
 9         Integer[] arr={23,45,67,89,0,54,35};
10         Bubble.sort(arr);
11         System.out.println(Arrays.toString(arr));
12 
13     }
14 }

 

1.3选择排序

排序原理:(映射索引)

假设第一个元素是最小值,和其他索引出的值进行比较,如果当前索引值大于其他处的索引值,则假定其它索引处为最小值,最后可以找到最小值的所在的索引

交互第一个索引处和最小值所在索引处所在的值

 

 

选择排序api设计

构造方法:

Selection

成员方法:

 

选择排序程序设计:

 

 1 package cn.itcast.algorithm.sort;
 2 
 3 public class Selection {
 4     public static void sort(Comparable[] a){
 5         for (int i = 0; i <= a.length-2; i++) {
 6             int minIndex = i;
 7             for (int j=i+1;j<a.length;j++){
 8                 if(greater(a[minIndex],a[j])){
 9                     minIndex=j;
10 
11                 }
12             }
13             exch(a,i,minIndex);
14         }
15 
16     }
17 
18     private static boolean greater(Comparable v , Comparable w){
19         return v.compareTo(w)>0;
20     }
21 
22     private static void exch(Comparable[] a, int i, int j){
23         Comparable temp;
24         temp = a[i];
25         a[i]=a[j];
26         a[j]=temp;
27     }
28 }

text

 

 1 package cn.itcast.algorithm.text;
 2 
 3 import cn.itcast.algorithm.sort.Selection;
 4 
 5 import java.util.Arrays;
 6 
 7 public class SelectionText {
 8 
 9     public static void main(String[] args) {
10         Integer[] a = {123,56,78,990,4569,789};
11         Selection.sort(a);
12         System.out.println(Arrays.toString(a));
13 
14     }
15 
16 
17 }

 

posted @ 2022-12-17 18:41  像素飞行员  阅读(23)  评论(0)    收藏  举报