模式:设计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 }
标签:username,sort,Comparable,java,--,age,day2,int,public From: https://www.cnblogs.com/zhuxuanlv/p/16989344.html