模式:设计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 }

最新文章

  1. android黑科技——完美解决界面逻辑的数据框架DataBinding(最新)的使用(二)
  2. webview页面缩放 &amp; 自适应
  3. PHP-redis中文文档介绍(转自http://www.jb51.net/article/33887.htm)
  4. Rancher 快速上手指南操作(1)
  5. [问题2014A05] 复旦高等代数 I(14级)每周一题(第七教学周)
  6. 算法与数据结构实验题6.4 order (二叉树)
  7. SQL删除重复数据
  8. &lt;构建之法&gt;之一至二章
  9. ASP.NET调用Office Com组件权限设置
  10. NeHe OpenGL教程 第四十三课:FreeType库
  11. java中接口的定义与实现
  12. Android多媒体开发-- OpenMax IL简介
  13. typedef,static,const用法
  14. 更新部分字段 NHibernate
  15. Python编程工具IDLE快捷键
  16. ASPCMS改造中
  17. java中获取远程ip的一个坑
  18. hdu-4300(kmp或者拓展kmp)
  19. 使用Node.js+Hexo+Github搭建个人博客(续)
  20. Oracle 12C -- 在相同的列的集合上创建多个索引

热门文章

  1. MySQL事务(四大特性)-存储过程
  2. 希腊字母表及latex代码
  3. 一文详解RocketMQ的存储模型
  4. python进阶之路6之 for循环方法
  5. strapi系列-如何创建一个定时任务-Cron Jobs
  6. VSCode 创建flutter项目和运行、调试、热更新项目
  7. 在spring boot3中使用native image
  8. antd 3.x升4.x踩坑之路~
  9. drf入门规范、序列化器组件、视图组件、请求与响应
  10. windows右键菜单扩展