说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,能力有限,文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。
前言
—
01
—
算法思想
02
—
具体实现代码
Bubbling.java
package com.bosen.bubbling;
/**
* <p>冒泡算法</p>
* @author Bosen 2021/5/26 14:18
*/
public class Bubbling {
/*
* 待排序的数组
*/
private int[] array;
public Bubbling(int[] array) {
this.array = array;
}
/*
* 执行冒泡排序
*/
public void sort() {
int length = array.length;
int temp;
for (int i=0; i<length-1; i++) {
for (int j=1; j<length; j++) {
// 左边的数大于右边的数,两个数据位置需进行替换
if (array[j-1] > array[j]) {
temp = array[j-1];
array[j-1] = array[j];
array[j] = temp;
}
}
System.out.print("第"+(i+1)+"轮的排序结果:");
display();
}
}
/*
* 打印每轮排序信息
*/
public void display() {
for (int i : array) {
System.out.print(i+"\t");
}
System.out.println();
}
}
Test.java
package com.bosen.bubbling;
/**
* <p>测试类</p>
* @author Bosen 2021/5/26 14:35
*/
public class Test {
public static void main(String[] args) {
Bubbling bubbling = new Bubbling(new int[]{5, 7, 4, 9, 11, 10, 3});
bubbling.sort();
}
}
输出结果
03
—
冒泡算法的缺陷
04
—
冒泡算法优化
/*
* 执行冒泡排序
*/
public void sort() {
int length = array.length;
int temp;
System.out.print("初始状态:\t");
display();
for (int i=0; i<length-1; i++) {
boolean flag = true;
for (int j=1; j<length; j++) {
// 左边的数大于右边的数,两个数据位置需进行替换
if (array[j-1] > array[j]) {
temp = array[j-1];
array[j-1] = array[j];
array[j] = temp;
flag = false;
}
}
if (flag) break;
System.out.print("第"+(i+1)+"轮的排序结果:");
display();
}
}
总结
—
👇长按二维码关注
文章转载自云丶言,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。