【算法导论-006】冒泡排序及其优化(BubbleSort)
来源:互联网 发布:cad设计软件下载 编辑:程序博客网 时间:2024/05/13 17:56
1、问题来源
【算法导论】P40 2-2
2、java实现
参考:http://blog.csdn.net/wdzxl198/article/details/8896447
最基本的方案就不赘述了,下面主要谈两类优化策略。
方案一:减少比较次数
/** * 创建时间:2014年8月6日 下午8:19:14 项目名称:Test * * @author Cao Yanfeng * @since JDK 1.6.0_21 类说明: */public class BubbleSort {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint[] array = { 1, -2, 3, -4, -5 };bubbleSort(array);for (int i : array) {System.out.println(i);}}/* * 冒泡排序算法 优化1:带有标志位的:,一旦不交換即array[j]<array[j-1]不存在,则表明已经排序完成,不用再循环 * 优化2:记录最后一次交换发生的位置,该位置之前的地方都已经表示排完序了。这里是前向冒泡法。 */public static void bubbleSort(int[] array) {boolean flag = true;int lastExchangeIndex = 0;while (flag) {flag = false;for (int i = lastExchangeIndex; i < array.length; i++) {for (int j = array.length - 1; j > i; j--) {if (array[j] < array[j - 1]) {array[j] ^= array[j - 1];array[j - 1] ^= array[j];array[j] ^= array[j - 1];flag = true;lastExchangeIndex = j - 1;}}}}}}方案二:双向扫描,解决不对称问题
/*双向冒泡排序,可以改善排序的不对称问题。也用到了方案一中的“优化1”*/public static void advancedBubbleSort(int[] array) {int low=0;int high=array.length-1;int index=low;boolean flag = true;while (high>low&&flag) {flag=false;for (int i = low; i < high; i++) {if (array[i]>array[i+1]) {array[i]^=array[i+1];array[i+1]^=array[i];array[i]^=array[i+1];index=i;flag=true;}}high=index;for (int i =high; i >low; i--) {if (array[i]<array[i-1]) {array[i]^=array[i-1];array[i-1]^=array[i];array[i]^=array[i-1];index=i;flag=true;}}low=index;}}}
0 0
- 【算法导论-006】冒泡排序及其优化(BubbleSort)
- BubbleSort 优化后的冒泡排序算法
- 冒泡排序(BubbleSort)
- 冒泡排序(BubbleSort)
- 冒泡排序(BubbleSort)
- 冒泡排序(BubbleSort)
- 冒泡排序(BubbleSort)
- BubbleSort(冒泡算法)
- 冒泡排序算法及其优化
- 冒泡排序算法及其优化
- 冒泡排序算法及其优化
- java冒泡排序(冒泡)算法Bubblesort
- 经典排序算法----冒泡排序算法及其优化(稳定)
- 冒泡排序(1)BubbleSort
- Java--冒泡排序(BubbleSort)
- 实现冒泡排序(BubbleSort)
- Java 冒泡排序(BubbleSort)
- 冒泡排序(bubbleSort.cpp)
- POJ 3468 A Simple Problem with Integers(成段更新)
- STL中慎重选择删除元素的方法
- DB2 rollforward命令使用详解
- 搜索题目集合
- 目标检测的图像特征提取之 HOG特征
- 【算法导论-006】冒泡排序及其优化(BubbleSort)
- kari433 矩阵快速幂
- 操作系统进程
- MFC相关宏简介
- JavaScript打字机效果实现
- 【数据结构与算法】选择排序
- 实现TAB页签
- Centos 命令使用技巧
- DB2 Recovering data恢复数据