排序算法冒泡排序

冒泡排序(Bubble BubbleSort)
是一种交换排序,他的基本思路是: 两两比较相邻记录的关键字,如果反序则交换。
时间复杂度:
1)最好情况:本身有序,需要比较n-1次 时间复杂度为o(n)
2)最坏情况:逆序情况,需要比较(n-1)+(n-2)+…+2+1=n(n-1)/2 时间复杂度为o(n²)
每一轮的排序对下一轮的排序有帮助,数字如同气泡慢慢往上浮

Paste_Image.png
static void bubbleSort(int[] array) {  
       if (array != null && array.length > 0) {  
           int i, j;  
           for (i = 0; i < array.length; i++) {  
               for (j = array.length - 1; j > i; j--) {  
                   if (array[j] < array[j - 1]) {  
                       swap(array, j, j - 1);  
                   }  
               }  
           }  
       }  
   }```

/**
* 将数组的2个位置交换
*/
static void swap(int[] array, int i, int j) {
if (array != null && array.length > 0) {
if (i >= 0 && j >= 0 && i <= array.length && j <= array.length) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}```
冒泡排序优化(增加tag),极端情况{2,1,3,4,5,6,7,8,9}后续不用交换

static void bubbleSortTag(int[] array) {  
       if (array != null && array.length > 0) {  
           int i, j;  
           boolean tag = true;//每一轮有木有交换数据  
           for (i = 0; i < array.length && tag; i++) {  
               tag = false;  
               for (j = array.length - 1; j > i; j--) {  
                   if (array[j] < array[j - 1]) {  
                       swap(array, j, j - 1);  
                       tag = true;  
                   }  
               }  
           }  
       }  
   }```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、算法简介 冒泡排序(Bubble Sort)是一种计算机科学最简单的排序算法之一。 它通过重复地走访要排序的数...
    likly阅读 3,682评论 0 0
  • 基本思想: 冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为...
    史史小子阅读 3,848评论 0 0
  • 冒泡排序除了它迷人的名字和导致了某些有趣的理论问题这一事实之外,似乎没有什么值得推荐的。--by Donald E...
    WX_WDN阅读 2,944评论 0 0
  • 2017年1月16日 为什么没有第四第五天?忘写了。 昨天做火车从拉萨来到日喀则,终于实现了在高原坐火车的愿望,虽...
    Sophia007阅读 984评论 0 0
  • (二十七) 六月刚刚过去,七月也悄悄闯进了人们的生活,天气一如既往的好。苟德胜大早上起来,吃完早饭正准备去地里看看...
    虚实先森阅读 1,638评论 0 6