简单排序之冒泡排序
2013-11-19 16:48
253 查看
总述
冒泡排序算法运行起来非常慢,但在概念上它是排序算法中最简单的。原理
这个算法的思路是将最小的数据项放在数组的最开始(数组下标为0),并将最大的数据项放在数组的最后(数组下标为length-1)。外层循环的计数器i从数组的最后开始,即i=length;每经过一次循环i-1;下标大于i的数据项都已经是排好序的。变量i在没完成一次内部循环后就左移1位,因此没有必要去处理那些已经排序完成的数据。
内层循环计数器从0开始,每完成一次内部循环体加1,当等于i时,结束循环。冒泡排序的核心是在内部循环中比较数组下标是j和j+1两个元素,如果array[j] > array[j + 1],交换两个元素。
实现
/** 文 件 名: BubbleSort.java
* 版 权: Beijing Jaeger Communication Electronic Technology Co., Ltd. Copyright YYYY-YYYY, All rights reserved
* 描 述: <冒泡排序>
* 修 改 人: gtsong
* 修改时间: 2013-11-19
* 跟踪单号: <跟踪单号>
* 修改单号: <修改单号>
* 修改内容: <修改内容>
*/
package com.pbi.simpleranking;
/**
* <一句话功能简述> <功能详细描述>
*
* @author
* @version [版本号, 2013-11-19]
* @see [相关类/方法]
* @since [产品/模块版本]
*/
public class BubbleSort
{
private static int[] arr = new int[] {27, 36, 18, 49, 31, 40, 5};
/**
* 排序循环执行N(N-1)/2次
* 时间复杂度O(N2)
*
* @return 排序后的结果
* @see [类、类#方法、类#成员]
*/
public static int[] sort(int[] array)
{
int tmp = -1;
for (int i = array.length; i > 1; i--)
{
for (int j = 0; j < i - 1; j++)
{
if (array[j] > array[j + 1])
{
tmp = array[j];
array[j] = array[j + 1];
array[j + 1] = tmp;
}
}
}
return array;
}
private static void display(int[] array)
{
for (int i = 0; i < array.length; i++)
{
System.out.print(arr[i] + "\t");
}
System.out.println();
}
public static void main(String[] args)
{
System.out.print("排序前:\t");
display(arr);
System.out.print("排序后:\t");
display(sort(arr));
}
}
效率
一般来说,数组中有N个数据元素,第一趟排序中有N-1次比较,第二趟中有N-2次,依此类推:(N-1)+(N-2)+…+1=N*(N-1)/2 ,交换和比较操作的次数都和N²成正比,常数不计算在大O表示法中,因此冒泡排序的时间复杂度为O(N²)。相关文章推荐
- [Java数据结构]简单排序之冒泡排序
- C#委托的简单学习:定义委托和使用、Func<int f1,out r1>、给自定义的类或数组排序(冒泡排序)
- 三种最简单的排序算法(直接插入排序、冒泡排序、简单选择排序)
- 简单交流下JavaScript的排序方法及冒泡排序有分析方法,
- C++三种排序,快速排序、选择排序、冒泡排序----简单代码
- 简单排序 --(冒泡排序,简单选择排序,直接插入排序)
- java几种排序简单实现(快速排序,冒泡排序,直接插入排序)
- C语言:两种简单的排序及其应用(选择排序和冒泡排序)
- 一个 冒泡排序 和 选择排序 的简单c程序
- 八大排序方法汇总(选择排序,插入排序-简单插入排序、shell排序,交换排序-冒泡排序、快速排序、堆排序,归并排序,计数排序)
- 冒泡排序,选择排序,插入排序,快速排序的简单性能测试
- PHP算法学习之“简单的交换排序”,“冒泡排序”以及“改进后的冒泡排序”
- 简单的排序算法——插入排序,选择排序,交换排序(冒泡排序,快速排序)
- 冒泡排序, 简单选择排序, 插入排序, 希尔排序, 快速排序 js 实现
- 简单排序方法——冒泡排序
- 数组的简单排序(冒泡排序,简单选择排序,插入排序)
- 简单排序以及冒泡排序
- 简单排序算法--冒泡排序
- 八大排序算法:简单插入排序、冒泡排序、希尔排序、快速排序、堆排序、归并排序等总结。
- C++简单排序算法之冒泡排序