小算法大世界之冒泡排序VS选择排序

本文详细介绍了冒泡排序和选择排序的算法思想、时间复杂度分析,并提供了Java实现。冒泡排序时间复杂度为O(n²),在顺序或接近顺序时效率较高,而选择排序时间复杂度同样为O(n²),但实际性能优于冒泡排序。通过代码测试验证,选择排序在数据量较大时仍能展现出较好的效率。
摘要由CSDN通过智能技术生成

【声明:全新原创,欢迎转载,如果发现文章错误或者有好的意见与建议希望指点下~!】

进入主题,本次文章的主要算法是冒泡排序与选择排序。

冒泡排序(bubble sort):顾名思义,就是把大的数想气泡一样一个个排到最顶端。

算法思想:从数组的第一个数开始(设数组一共有n个数据):

    1.从第一个数开始,将第一个数与第二个数比较,如果第一个数大于第二个数,那么交换第一个数与第二个数,如果第二个数大于第一个数,则不变。然后比较第二个与第三个,一次类推,直到比较完第n-1个和第n个,一直需要比较n-1次。(注:第一趟结束后最后一个数为最大的数,第二趟结束后倒数第二个为第二大的数)

    2.第一趟完成后将重复上面的步骤,直到没有任何一个数需要比较。

例如:无序数列:11,22,4,5,38,9,14,56,78,49

                第一趟:11,4,5,22,9,14,38,56,49,78

第二趟:4,5,11,9,14,22,38,49,56,78

。。。。。。

直到最后一趟排出有序数列。

冒泡排序的时间复杂度分析:

很明显:对于冒泡排序来说,最好的情况是顺序,此时只需要比较n-1次,时间复杂度是O(n);

               最差的情况是逆序,此时需要比较n-1趟,每趟需要比较n-i个数,所以最坏的时间复杂度为O(n²)。

综上所诉,冒泡排序的时间复杂度为O(n²)。

注:冒泡排序是一种稳定的算法。

下面给出冒泡排序的JAVA实现:

class bubbleSort
{
int temp = 0;//临时变量
public void sort(int []arr)
{
for(int i=0;i<arr.length-1;i++)//最多做n-1趟排序
{
for(int j=0;j<arr.length-1-i;j++)//每一次都是比较两个数
     //然后把较大的数据换到后

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值