网站首页 > java教程 正文
冒泡排序原理
冒泡排序(Bubble Sort)是一种简单的排序算法,它通过多次遍历待排序的元素,比较相邻元素的大小,并交换它们直到整个序列有序。冒泡排序的基本思想是将较大的元素逐渐“浮”到数组的右端,而较小的元素逐渐“沉”到数组的左端。其基本原理如下:
- 从数组的第一个元素开始,比较相邻的两个元素。
- 如果前一个元素大于后一个元素(升序排序),则交换它们的位置。
- 步骤1和步骤2,直到遍历整个数组。
- 上步骤,每次遍历都将最大的元素“冒泡”到数组的末尾。
- 复以上步骤,但不包括已排序的最大元素,直到整个数组排序完成。
冒泡排序的java代码
package com.datastructure;
class ArrayBub {
private long[] a;
private int nElems;
public ArrayBub(int max) { //constructor
a = new long[max];
nElems = 0;
}
public void insert(long value) {
a[nElems] = value;
nElems++;
}
public void display() {
for (int j = 0; j < nElems; j++) {
System.out.print(a[j] + " ");
}
System.out.println(" ");
}
public void bubbleSort() { //冒泡排序核心代码
int out, in;
for (out = nElems - 1; out > 1; out--) { //outer loop (backward)
for (in = 0; in < out; in++) { //inner loop(forward)
if (a[in] > a[in + 1]) { //out of order?
swap(in, in + 1); //swap them
}
}
}
}
private void swap(int one, int two) {
long temp = a[one];
a[one] = a[two];
a[two] = temp;
}
}
public class bubbleSort {
public static void main(String[] args) {
int maxSize = 100;
ArrayBub arr;
arr = new ArrayBub(maxSize);
arr.insert(77);
arr.insert(99);
arr.insert(44);
arr.insert(55);
arr.insert(22);
arr.insert(88);
arr.insert(11);
arr.insert(00);
arr.insert(66);
arr.insert(33);
System.out.println("原始数组:");
arr.display();
System.out.println("排序后数组:");
arr.bubbleSort();
arr.display();
}
}
冒泡排序的效率
由于冒泡排序的这两个操作都和2N2成正比,因此其总效率可以表示为(2)O(N2)。这意味着,对于包含N个元素的数列,冒泡排序需要大约2N2次操作来完成排序。这种算法的时间复杂度是二次的,意味着随着输入规模的增加,其运行时间会显著增加,因此在实际应用中,当处理大量数据时,冒泡排序并不是最高效的选择。
猜你喜欢
- 2024-09-25 Java数组的排序冒泡排序选择排序二种冒泡逆排序
- 2024-09-25 java冒泡排序(Java冒泡排序算法)
- 2024-09-25 好程序员Java学习路线分享冒泡排序及优化
- 2024-09-25 五分钟学会一个初级算法:冒泡排序
- 2024-09-25 Java冒泡排序-大白话解释(java冒泡排序的方法代码)
- 2024-09-25 C#基础语法循环篇:冒泡排序算法讲解(附源码)
- 2024-09-25 排序算法之冒泡排序(冒泡排序 算法)
- 2024-09-25 经典排序算法之——冒泡排序(冒泡排序算法实例)
- 2024-09-25 Java十大排序算法之冒泡排序(java冒泡排序和快速排序)
- 2024-09-25 JAVA手写算法 | 冒泡排序算法(java简单冒泡排序写法)
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)