递归方式实现BubbleSort 冒泡排序
2015-10-10 16:10
369 查看
git url: https://github.com/googlefan/sort.git
冒泡排序算法的运作如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
冒泡排序算法的运作如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
package sort; import java.util.Arrays; import java.util.Random; public class BubbleSort { public static void main(String[] args) { int arrLength = 100; int randomTop = 1000; int[] intArr = new int[arrLength]; Random r = new Random(); for (int i = 0; i < arrLength; i++) { int j = r.nextInt(randomTop); intArr[i] = j; } long start = System.currentTimeMillis(); System.out.println(Arrays.toString(intArr)); bubbleSort(intArr); long end = System.currentTimeMillis(); System.out.println("运行时间:" + (end - start) + "毫秒"); } private static void bubbleSort(int[] intArr) { boolean isSorted = false; for (int flgi = 0; flgi < intArr.length - 1; flgi++) { if (compare(intArr[flgi], intArr[flgi + 1])) { changePlace(intArr, flgi); isSorted = true; } } if (!isSorted) { return; } bubbleSort(intArr); } private static void changePlace(int[] intArr, int flgi) { int proNum = intArr[flgi]; intArr[flgi] = intArr[flgi + 1]; intArr[flgi + 1] = proNum; System.out.println(Arrays.toString(intArr)); } private static boolean compare(int i, int j) { if (i > j) { return true; } return false; } }
相关文章推荐
- C#中的递归APS和CPS模式详解
- WinForm实现按名称递归查找控件的方法
- C#中的尾递归与Continuation详解
- C#递归实现显示文件夹及所有文件并计算其大小的方法
- php递归创建目录的方法
- 修改正确的asp冒泡排序
- javascript事件冒泡实例分析
- Javascript递归打印Document层次关系实例分析
- JQuery中DOM事件冒泡实例分析
- oracle 使用递归的性能提示测试对比
- 使用curl递归下载软件脚本分享
- Perl脚本实现递归遍历目录下的文件
- JavaScript的递归之递归与循环示例介绍
- C# 递归查找树状目录实现方法
- 全排列算法的非递归实现与递归实现的方法(C++)
- php递归列出所有文件和目录的代码
- javascript 不让鼠标事件触发
- js冒泡、捕获事件及阻止冒泡方法详细总结
- java递归菜单树转换成pojo对象
- 一个JavaScript递归实现反转数组字符串的实例