冒泡排序
来源:互联网 发布:ubuntu安装百度输入法 编辑:程序博客网 时间:2024/06/06 11:28
冒泡排序
话不多说,上代码
/** * 复习一下冒泡排序 */public class BubbleSort{ public static void main(String[] args) { int [] arr = {1,2,4,5,9,8,7}; printArr(arr); bubbleSort(arr); printArr(arr); } private static void bubbleSort(int[] arr) { for (int i = 0; i < arr.length-1; i++) { for (int j = 0; j <arr.length-i-1 ; j++) { if (arr[j]>arr[j+1]) swap(arr,j,j+1); } } } private static void swap(int[] arr, int j, int i) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } private static void printArr(int[] arr) { System.out.print("["); for (int i = 0; i < arr.length; i++) { if (i != arr.length-1) System.out.print(arr[i] + ","); else { System.out.println(arr[i] + "]"); } } }}
冒泡排序:
本质就是两两交换,外层i=0时,进行第一遍筛选,把最大值选出来放到结尾,i=1时,进行第二遍筛选,把仅次于最大值的数放在倒数第二位,外层进行到第arr.length-1(即i=6)时,后面6个数字已经排序完毕,只剩第一个数了,也就没必要排了,它肯定是最小的那个,简而言之,外层一次筛选只能选出一个数,那么很显然要进行6次筛选,即(arr.length-1)。
内层循环肯定要从第一个数字开始排起(即j=0),那么j < arr.length-1-i又是什么意思呢?先说-1吧,如果不-1,j能取到的最大值就是6,arr[6]是没有问题的,可是arr[j+1](即arr[7])就越界了,所以要-1;-i也很好理解,外层i=0时,上文说道这一轮会选出最大值,那么内层比较就可以少一次,(ps:不-i也没问题,但是为了提高效率嘛)。
1 0
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- jQuery中的Sizzle引擎分析
- hdu 5676 幸运数
- [leetcode] 84. Largest Rectangle in Histogram
- ViewPager 详解(四)----自主实现滑动指示条
- apache的配置
- 冒泡排序
- 搭建Spring开发环境并编写第一个Spring小程序
- Java.toString() ,(String),String.valueOf()的区别
- Spring源码下载
- BLE 广播数据解析
- 虚拟机无法开机提示:This virtual machine appears to be in use
- 从0开始搭建坚不可摧的Web系统主流架构
- Android进阶
- MYSQL学习篇之002-LINUX环境MYSQL源代码安装第二个MYSQL总结