JavaSE 学习参考:数组排序
2017-02-23 19:34
218 查看
数组排序是数组操作常用操作之一,通过排序将数组中原来顺序按照升序(从小到大)或降序(从大到小)重新组织。数组排序算法很多,最常用的是冒泡排序。本文演示冒泡排序算法,下面以升序排序为例讲解。
冒泡排序可以理解为需要若干趟相邻元素交换,每趟交换的结果是最大元素排在最后。以下面包含10个元素数组为例。
5 | 7 | 2 | 9 | 4 | 0 | 8 | 6 | 3 | 1 |
每一趟相邻元素交换,原则是前者大于后者,则将两者交换,否则不动。
第一趟:10个元素相邻比较需要9次。最终9排在最后
5 | 7 | 2 | 9 | 4 | 0 | 8 | 6 | 3 | 1 |
5 | 7 | 2 | 9 | 4 | 0 | 8 | 6 | 3 | 1 |
5 | 2 | 7 | 9 | 4 | 0 | 8 | 6 | 3 | 1 |
5 | 2 | 7 | 9 | 4 | 0 | 8 | 6 | 3 | 1 |
5 | 2 | 7 | 4 | 9 | 0 | 8 | 6 | 3 | 1 |
5 | 2 | 7 | 4 | 0 | 9 | 8 | 6 | 3 | 1 |
5 | 2 | 7 | 4 | 0 | 8 | 9 | 6 | 3 | 1 |
5 | 2 | 7 | 4 | 0 | 8 | 6 | 9 | 3 | 1 |
5 | 2 | 7 | 4 | 0 | 8 | 6 | 3 | 9 | 1 |
5 | 2 | 7 | 4 | 0 | 8 | 6 | 3 | 1 | 9 |
第二趟:前9个相邻元素参与比较(因为最后一个已是最大的了,不需要参与)需要8次,最终8排在9之前。
依次类推,每趟相邻元素比较得互剩余元素最大元素放上趟排序得到最大元素之前,因此需要9次。
代码如下:
public static void main(String[] args) { int[] arr={5,7,2,9,4,0,8,6,3,1}; for(int i=0;i<arr.length-1;i++){ for(int j=i;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ int t=arr[j]; arr[j]=arr[j+1]; arr[j+1]=t; } } } for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+" "); } } |
相关文章推荐
- JavaSE 学习参考:数组排序
- JavaSE 学习参考:数组遍历
- JavaSE 学习参考:二维数组定义
- JavaSE 学习参考:数组增删改查操作
- JavaSE 学习参考:数组遍历
- 【JavaSE_学习笔记】排序、二分查找与数组工具类
- JavaSE 学习参考:数组
- JavaSE 学习参考:数组遍历
- JavaSE 学习参考:数组增删改查操作
- JavaSE 学习参考:数组遍历
- JavaSE 学习参考:数组
- PHP学习笔记【12】--PHP数组排序
- ASP.NET温故而知新学习系列之ASP.NET多线程编程—多线程实现数组排序(十)
- PHP学习笔记【12】--PHP数组排序
- Java学习之数组1(1.数组的声明;2.元素为引用数据类型的数组;3.关于main方法里的String[] args;4.数组排序;5.数3退1 数组算法,(用数组模拟链表);6数组查找之二分法;7数组的拷贝)
- 一步一步学习java数组学习(ch5)对象数组的排序
- Object-c学习之路八(NSArray(数组)遍历和排序)
- java学习4--Java 的常用包与数组的复制与排序
- Java容器类学习笔记2--数组排序
- KMP算法学习笔记--按定义计算next数组(个人参考)