冒泡排序(Bubblesort)之Java实现

转载 2013年12月04日 20:21:24

冒泡排序算法介绍

冒泡排序比插入排序更简单,把最大的元素逐步推到最高位(当前须处理子数组的最高位)。依我的理解,冒泡排序是一个一层层筑顶的过程。顶筑好了,排序也就好了。冒泡排序的最坏运行时间是O(n2),效率和插入排序一样。

冒泡排序算法Java实现

先实现一个数组工具类。代码如下:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. public class ArrayUtils {  
  2.       
  3.         public static void printArray(int[] array) {  
  4.             System.out.print("{");  
  5.             for (int i = 0; i < array.length; i++) {  
  6.                 System.out.print(array[i]);  
  7.                 if (i < array.length - 1) {  
  8.                     System.out.print(", ");  
  9.                 }  
  10.             }  
  11.             System.out.println("}");  
  12.         }  
  13.   
  14.         public static void exchangeElements(int[] array, int index1, int index2) {  
  15.             int temp = array[index1];  
  16.             array[index1] = array[index2];  
  17.             array[index2] = temp;  
  18.         }  
  19.     }  

逐步选取n-1到1(Java里面数组以0开始标记),分别作为第n,n-1,...,2层顶,第2层顶筑好了之后,只剩下一个比它小的元素,排序结束。每个顶的筑成都从位置0开始,依次和下一位置的元素比较,如果比下一位大,就交换它俩的位置。冒泡排序的Java实现以及测试代码如下:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. public class BubbleSort {  
  2.   
  3.         public static void main(String[] args) {  
  4.             int[] array = { 9876543210, -1, -2, -3 };  
  5.   
  6.             System.out.println("Before sort:");  
  7.             ArrayUtils.printArray(array);  
  8.   
  9.             bubbleSort(array);  
  10.   
  11.             System.out.println("After sort:");  
  12.             ArrayUtils.printArray(array);  
  13.         }  
  14.   
  15.         public static void bubbleSort(int[] array) {  
  16.             if (array.length <= 1) {  
  17.                 return;  
  18.             }  
  19.   
  20.             int size = array.length;  
  21.             for (int i = size - 1; i > 0; i--) {  
  22.                 for (int j = 0; j < i; j++) {  
  23.                     if (array[j] > array[j + 1]) {  
  24.                         ArrayUtils.exchangeElements(array, j, j + 1);  
  25.                     }  
  26.                 }  
  27.             }  
  28.         }  
  29.     }  

编函数,完成冒泡排序。

/* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者: 刘同宾 ...
  • liubinzi123
  • liubinzi123
  • 2012年12月02日 18:47
  • 1809

冒泡排序的模板函数

将类型进行参数化,就可以制造函数模板了。下面实现冒泡排序的模板函数。 //bubbleSort.h template void bubblesort(T arr[],int n) { bool...
  • sanqima
  • sanqima
  • 2015年01月19日 18:39
  • 1114

Java中的冒泡排序原理及实现方法

冒泡排序 1、原理:每一次循环都两两比较,直到最后,如下图就是两次循环的比较方式 (以上图片网络借用) 2、代码: public class BubbleSortTest { //冒泡排序法 pub...
  • Cross_self
  • Cross_self
  • 2015年11月18日 23:31
  • 1987

冒泡排序(Bubblesort)之Java实现

冒泡排序算法介绍 冒泡排序比插入排序更简单,把最大的元素逐步推到最高位(当前须处理子数组的最高位)。依我的理解,冒泡排序是一个一层层筑顶的过程。顶筑好了,排序也就好了。冒泡排序的最坏运行时间是O(n...
  • kimylrong
  • kimylrong
  • 2013年12月04日 17:54
  • 6320

算法代码实现之冒泡排序,Java实现

两种类似的方式: /** * 冒泡排序 * @author roc */ public class BubbleSort { //交换数组元素 private static ...
  • QQ245671051
  • QQ245671051
  • 2016年02月27日 20:45
  • 848

c/c++冒泡排序(BubbleSort)

冒泡排序的原理是,每执行一次循环,就会把最大的数放到右边,例子中arr[]={2,1,6,3,8,4,9,5,7,0};总共十个数,第一次选择最大的数需要比较9次,第二次在未排序的数中选择最大的数则就...
  • gaohuazhao
  • gaohuazhao
  • 2016年06月22日 10:04
  • 498

写一个通用的冒泡排序函数

提到通用,我们首先想到的就是模板了。 函数内部就是冒泡排序的实现了,我们看一下。//我们先写一个升序排列,一会再对它进行改造一下 template void BubbleSort(T*arr,siz...
  • lizhidefengzi
  • lizhidefengzi
  • 2017年03月21日 02:46
  • 870

【排序算法】冒泡排序原理及Java实现

冒泡排序顾名思义就是整个过程像气泡一样往上升,单向冒泡排序的基本思想是(假设由小到大排序):对于给定n个记录,从第一个记录开始依次对相邻的两个记录进行比较,当前面的记录大于后面的记录时,交换位置,进行...
  • jianyuerensheng
  • jianyuerensheng
  • 2016年04月26日 21:26
  • 7274

编写函数,实现冒泡排序

使用 JavaScript 编写的冒泡排序函数如下所示: function bubbleSort(arr) { for (var i = 0; i < arr.length; i++...
  • u012396955
  • u012396955
  • 2016年12月29日 16:46
  • 882

排序算法之冒泡排序的思想以及Java实现

1 基本思想 设排序表长为n,从后向前或者从前向后两两比较相邻元素的值,如果两者的相对次序不对(A[i-1] > A[i]),则交换它们,其结果是将最小的元素交换到待排序序列的第一个位置,我们称它...
  • whq19890827
  • whq19890827
  • 2016年08月14日 21:12
  • 1519
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:冒泡排序(Bubblesort)之Java实现
举报原因:
原因补充:

(最多只允许输入30个字)