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