冒泡排序算法原理及JAVA实现代码

时间:2022-08-13 10:30:40 

冒泡排序法:关键字较小的记录好比气泡逐趟上浮,关键字较大的记录好比石块下沉,每趟有一块最大的石块沉底。

算法本质:(最大值是关键点,肯定放到最后了,如此循环)每次都从第一位向后滚动比较,使最大值沉底,最小值上升一次,最后一位向前推进(即最后一位刚确定的最大值不再参加比较,比较次数减1)

复杂度: 时间复杂度 O(n2) ,空间复杂度O(1)

JAVA源代码(成功运行,需要Date类)


 public static void bubbleSort(Date[] days) {
  int len = days.length;
  Date temp;
  for (int i = len - 1; i >= 1; i--) {
   for (int j = 0; j < i; j++) {
    if (days[j].compare(days[j + 1]) > 0) {
     temp = days[j + 1];
     days[j + 1] = days[j];
     days[j] = temp;
    }
   }
  }
 }
class Date {
 int year, month, day;

 Date(int y, int m, int d) {
  year = y;
  month = m;
  day = d;
 }

 public int compare(Date date) {
  return year > date.year ? 1 : year < date.year ? -1
    : month > date.month ? 1 : month < date.month ? -1
      : day > date.day ? 1 : day < date.day ? -1 : 0;
 }

 public void print() {
  System.out.println(year + " " + month + " " + day);
 }
}


package testSortAlgorithm;

public class BubbleSort {
 public static void main(String[] args) {
  int array[] = { 5, 6, 8, 4, 2, 4, 9, 0 };
  bubbleSort(array);
  for (int i = 0; i < array.length; i++) {
   System.out.println(array[i]);
  }
 }

 public static void bubbleSort(int array[]) {
  int temp;
  for (int i = array.length - 1; i > 0; i--) {
   for (int j = 0; j < i; j++) {
    if (array[j] > array[j + 1]) {
     temp = array[j];
     array[j] = array[j + 1];
     array[j + 1] = temp;
    }
   }
  }
 }
}

标签:冒泡排序
0
投稿

猜你喜欢

  • Springboot启动后执行方法小结

    2022-09-26 22:12:02
  • Android线程间通信Handler源码详解

    2021-12-31 07:04:10
  • spring mvc中直接注入的HttpServletRequst安全吗

    2021-12-29 07:48:16
  • Spring Cloud Gateway 远程代码执行漏洞(CVE-2022-22947)的过程解析

    2021-10-03 11:25:56
  • spring boot+vue 的前后端分离与合并方案实例详解

    2023-08-20 10:41:07
  • C#中重载重写和覆盖的定义与区别

    2022-04-23 09:25:34
  • android 通知Notification详解及实例代码

    2023-06-26 12:11:42
  • Matlab实现贪吃蛇小游戏的示例代码

    2023-07-14 14:13:00
  • C#如何通过匿名类直接使用访问JSON数据详解

    2023-07-20 12:31:53
  • 基于@Bean修饰的方法参数的注入方式

    2022-09-16 06:45:14
  • 安卓系统中实现摇一摇画面振动效果的方法

    2023-12-05 02:53:53
  • SpringBoot读取资源目录中JSON文件的方法实例

    2023-04-26 02:00:42
  • C#实现实体类和XML相互转换

    2023-06-16 04:37:32
  • IDEA简单实现登录注册页面

    2023-08-06 19:10:37
  • 详解Java数据库连接JDBC基础知识(操作数据库:增删改查)

    2023-08-22 23:47:37
  • c++ 函数指针相关总结

    2022-09-26 04:42:33
  • Redis使用RedisTemplate模板类的常用操作方式

    2023-01-30 08:33:40
  • 基于C#对用户密码使用MD5加密与解密

    2022-11-24 23:05:23
  • Java线程优先级和守护线程原理解析

    2023-03-27 16:45:30
  • javaweb上传下载实例完整版解析(上)

    2021-07-31 05:40:23
  • asp之家 软件编程 m.aspxhome.com