欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java数据结构与算法之冒泡排序详解

程序员文章站 2024-03-31 12:03:28
本文实例讲述了java数据结构与算法之冒泡排序。分享给大家供大家参考,具体如下: 前面文章讲述的排序算法都是基于插入类的排序,这篇文章开始介绍交换类的排序算法,即:冒泡排...

本文实例讲述了java数据结构与算法之冒泡排序。分享给大家供大家参考,具体如下:

前面文章讲述的排序算法都是基于插入类的排序,这篇文章开始介绍交换类的排序算法,即:冒泡排序、快速排序(冒泡排序的改进)

交换类的算法:通过交换逆序元素进行排序的方法。

冒泡排序:反复扫描待排序记录序列,在扫描的过程中,顺次比较相邻的两个元素的大小,若逆序就交换位置。

算法实现代码如下:

package exp_sort;
public class bubblesort {
  public static void bubble(int array[]) {
    boolean change = true;
    for (int i = 0; i < array.length && change; i++) {
      change = false;
      for (int j = 0; j < array.length - i - 1; j++) {
        if (array[j] > array[j + 1]) {
          int temp = array[j];
          array[j] = array[j + 1];
          array[j + 1] = temp;
          change = true;
        }
      }
    }
    for (int i = 0; i < array.length; i++) {
      system.out.print(array[i] + " ");
    }
    system.out.println("\n");
  }
  public static void main(string[] args) {
    // todo auto-generated method stub
    int array[] = { 38, 62, 35, 77, 55, 14, 35, 98 };
    bubble(array);
  }
}

算法分析:最好的情况是,需要排序的初始状态是正序排列的,则一趟扫描即可完成,此时时间复杂度是o(n);最坏情况是,需要排序的初始状态是反序的,则需要n-1趟扫描,此时时间复杂度是o(n^2)空间复杂度是o(1);该算法是一种稳定的排序方法

更多关于java算法相关内容感兴趣的读者可查看本站专题:《java数据结构与算法教程》、《java操作dom节点技巧总结》、《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。