Java排序算法1:冒泡排序

本文详细介绍了冒泡排序的基本思想及其实现步骤,并通过一个具体的排序示例帮助理解。此外,还提供了Java语言实现的源代码,并分析了冒泡排序的时间复杂度和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.思想:

它重复走访数列,走访n-1遍,每次比较相邻的两个元素,如果第一个元素大于(小于)后一个元素,则交换(取决于你约定是升序还是降序),这样就可以把最大(最小)的数沉到最后面。

二.例子:

比如5,3,2,4.第一趟比较过程为:

1.比较5和3,5>3,则交换,交换后的序列为3,5,2,4.

2.比较5,2,5>2,则交换,交换后的序列为3,2,5,4.

3.比较5,4,5>2,则交换,交换后的序列为3,2,4,5.

这样就可以把最大的数5沉到最后面,第二趟,第三趟依次把4,3沉到倒数第二和倒数第三的位置。

三.实现代码:

    public class BubbleSort {  
        public static void main(String args[])  
        {  
            int num[] = {4,3,6,9887,5,3,2,3,1};  
      
            System.out.print("原始数据:");  
            print(num);       
              
            sort(num);  
              
            System.out.print("排序后数据:");  
            print(num);  
        }  
          
        public static void sort(int num[])  
        {  
            int i,j;   //循环变量  
            int flag;    //交换变量  
              
            for(i = 0; i < num.length - 1 ; ++i)  
            {  
                for(j = 0; j < num.length - 1 - i; ++j)  
                if(num[j] > num[j + 1])  
                {  
                    flag = num[j];  
                    num[j] = num[j + 1];  
                    num[j + 1] = flag;  
                }  
            }  
        }  
          
        public static void print(int num[])  
        {  
            int i;  
              
            for(i = 0; i < num.length; ++i)  
            {  
                System.out.print(num[i]+" ");  
            }  
            System.out.print("\n");  
        }  
    }  

四.复杂度和应用:

时间复杂度为:O(n*n), 空间复杂度为O(1).是稳定的排序算法。

应用:冒泡排序主要用于教学,可在问题规模较小的时候使用,简单易懂。

五.参考资料:

1.追竹的博客:http://blog.youkuaiyun.com/apei830/article/details/6584770

2.百度百科-冒泡排序:http://baike.baidu.com/view/254413.htm?fromId=1313793&fr=wordsearch



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值