简单排序之冒泡排序
来源:互联网 发布:ckplayer 源码 编辑:程序博客网 时间:2024/06/07 02:23
总述
冒泡排序算法运行起来非常慢,但在概念上它是排序算法中最简单的。
原理
这个算法的思路是将最小的数据项放在数组的最开始(数组下标为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++简单排序算法之冒泡排序
- 排序算法之简单冒泡排序
- 简单的排序之冒泡排序
- C++简单排序算法之冒泡排序
- 简单c排序之冒泡排序法
- [Java数据结构]简单排序之冒泡排序
- 简单排序之冒泡排序,选择排序,插入排序
- 简单排序---冒泡排序
- 简单排序:冒泡排序
- 简单排序--冒泡排序
- 简单排序:冒泡排序
- 表达式求值(一)
- 杂谈topcoder1——srm572 DistinctRemainders
- XP系统怎么设置共享无线网络?
- wince6.0编译命令分析
- 将maven项目部署到nexus的repository maven项目,可以通过maven的deploy插件,将之部署到远程服务器上,这样,该项目的artifact,就可以被其他项目通过pom的dep
- 简单排序之冒泡排序
- 阿里巴巴集团去IOE运动的思考与总结
- VS2010完全卸载
- JIRA BUG跟踪系统
- IOS开发中网络状态的判断和时时更新
- myeclipse 文件快速定位怎么设置、文件定位取消
- 运算符重载
- mysql之frederated存储引擎
- 多选列表Select之双击删除与添加Demo