冒泡排序java_Java实现冒泡排序算法及对其的简单优化示例

本文介绍了冒泡排序的基本原理和Java实现,包括原始版本和优化版本的代码示例。通过冒泡排序的详细步骤解析,展示了算法的运行过程,并分析了其时间复杂度。在完全有序的情况下,冒泡排序的时间复杂度可以达到O(n),但在一般情况下为O(n^2)。文章还指出,尽管冒泡排序简单易懂,但因其效率问题,通常只适用于小规模数据的排序。
摘要由CSDN通过智能技术生成

原理

冒泡排序大概是所有程序员都会用的算法,也是最熟悉的算法之一。

它的思路并不复杂:

设现在要给数组arr[]排序,它有n个元素。

1.如果n=1:显然不用排了。(实际上这个讨论似乎没什么必要)

2.如果n>1:

(1)我们从第一个元素开始,把每两个相邻元素进行比较,如果前面的元素比后面的大,那么在最后的结果里面前者肯定排在后面。所以,我们把这两个元素交换。然后进行下两个相邻的元素的比较。如此直到最后一对元素比较完毕,则第一轮排序完成。可以肯定,最后一个元素一定是数组中最大的(因为每次都把相对大的放到后面了)。

(2)重复上述过程,这次我们无需考虑最后一个,因为它已经排好了。

(3)如此直到只剩一个元素,这个元素一定是最小的,那么我们的排序可以结束了。显然,进行了n-1次排序。

上述过程中,每次(或者叫做“轮”)排序都会有一个数从某个位置慢慢“浮动”到最终的位置(画个示意图,把数组画成竖直的就可以看出来),就像冒泡一样,所以,它被称为“冒泡排序法”。

代码实现:

public class BubbleSort{

public static void main(String[] args){

int score[] = {67, 69, 75, 87, 89, 90, 99, 100};

for (int i = 0; i < score.length -1; i++){ //最多做n-1趟排序

for(int j = 0 ;j <

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值