一步步学习数据结构和算法之冒泡排序效率分析及java实现

冒泡排序效率分析及java实现:
public class BubbleSort {
 /**
  * 冒泡排序原理:冒泡排序的关键点在于元素两两比较并交换位置,每一轮的比较可以确定一个最大或者最小元素
  * 冒泡排序时间复杂度:其需要比较的次数为n(n-1)/2 空间占用率为O(1)
  * 在最差的情况下即元素逆序其需要比较的次数和元素移动的次数相等
  *
  * 当然可以对冒泡排序进行一定的优化,添加一个标志位,如果一次循环下来,没有发生任何元素位置的交换,
  *这是序列为有序,结束冒泡比较
  * @param array
  */
 public int[] bubbleSort(int[] array)
 {
  int i,j,temp,len=array.length;
  boolean flag=true;
  for(i=0;i<len&&flag;i++)
  {
   flag = false; //如果在一次循环中该关键字始终为true,那么该序列为有序序列,循环终止
   for(j=len-1;j>i;j--)
   {
    if(array[j-1]>array[j]) //比较并交换
    {
     temp = array[j-1];
     array[j-1] = array[j];
     array[j] = temp;
     flag = true;
    }
   }
  }
  return array;
 }
 /***
  * 打印排序结果
  */
 public void print(int[] array )
 {
  for(int i=0;i<array.length;i++)
  {
   System.out.print(array[i]+",");
  }
 }
 
 public static void main(String[] args) {
  BubbleSort bs = new BubbleSort();
  int[] array = {1,5,9,3,4,18,7,6};
  bs.print(bs.bubbleSort(array));
 }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值