Java中对数组的排序方法总汇分析
来源:互联网 发布:linux设备驱动程序pdf 编辑:程序博客网 时间:2024/05/17 07:54
1.冒泡排序
public void bubbleSort(int a[]) {int n = a.length;for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - 1; j++) {if (a[j] > a[j + 1]) {int temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}}
先拿出来数组中的第一个数,然后后面的数进行比较,规则是谁大取谁,也就 是说第一轮比较出来了一个最大的值
2. 选择排序
public void selectiveSort(int arr[]) {for (int i = 0; i < arr.length; i++) {// 这里实现的方法是将前一个数依次与后面的数据进行比较for (int j = i + 1; j < arr.length; j++) {// 如果前一位置的数据大于后一位置的数据,那么就将其他进行置换,也就是说将最小的数排列在了左面if (arr[i] > arr[j]) {int tep = arr[i];// 实现两个变量的值互换,由此可以排列出数组从小到大arr[i] = arr[j];arr[j] = tep;}}}}
3.快速排序
* 快速排序是对冒泡排序的一种改进。
* 它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
* 最坏情况的时间复杂度为O(n2),最好情况时间复杂度为O(nlog2n)
排序过程分析
假设要排序的数组是A[1]……A[N],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一躺快速排序;
*设要排序的数组是A[0]……A[N-1],
*首先任意选取一个数据(通常选用第一个元素)作为基准点,
*然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序,
*然后采用分治策略,分别以同样的方式排序前面和后面的数据。
*值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。
排序过程可分为:
1、设置两个变量X、Y,排序开始的时候 X:=1,Y:=N;
2、以第一个数组元素作为关键数据,赋值给number,即number:=A[1];
3、从Y开始向前搜索,即由后开始向前搜索(Y:=Y-1),找到第一个小于number的值,两者交换;
4、从X开始向后搜索,即由前开始向后搜索(X:=X+1),找到第一个大于number的值,两者交换;
4、重复第3、4步,直到XY=J;
例如:待排序的数组A的值分别是:(初始关键数据number:=49)
A[1] A[2] A[3] A[4] A[5] A[6] A[7]:
49 38 65 97 76 13 27
进行第一次交换后: 27 38 65 97 76 13 49
( 按照算法的第三步从后面开始找)
进行第二次交换后: 27 38 49 97 76 13 65
( 按照算法的第四步从前面开始找>X的值,65>49,两者交换,此时I:=3 )
进行第三次交换后: 27 38 13 97 76 49 65
( 按照算法的第五步将又一次执行算法的第三步从后开始找)
进行第四次交换后: 27 38 13 49 76 97 65
( 按照算法的第四步从前面开始找大于X的值,97>49,两者交换,此时J:=4 )
此时再执行第三步的时候就发现I=J,从而结束一躺快速排序,那么经过一躺快速排序之后的结果是:27 38 13 49 76 97 65,即所以大于49的数全部在49的后面,所以小于49的数全部在49的前面。
- Java中对数组的排序方法总汇分析
- 关于Java中对数组进行冒泡排序时出现ArrayIndexOutOfBoundsException异常时的分析和处理方法
- OC中对数组排序的几种方法
- Java--对数组排序的常见方法总结
- java 对二维数组排序的几种方法
- JAVA中对一维数组排序的方法(在快速排序上进行的优化)
- java中对数组的排序的基本练习
- 三种方法对java数组排序
- java 排序总汇
- java中对Byte字符数组定长截取的方法
- java中对数组操作的一些特殊方法
- JAVA 中数组的几种排序方法 标准的!
- JAVA 中数组的几种排序方法
- JAVA中运用数组的四种排序方法
- JAVA中运用数组的四种排序方法
- JAVA中运用数组的四种排序方法
- JAVA中运用数组的四种排序方法
- JAVA中运用数组的四种排序方法
- cf C. Fragile Bridges
- 一个远程数据采集系统的实现
- Question_one_数据库插入数据无法显示中文
- 最小路径覆盖 poj1422 Air Raid
- [2031]:进制转换
- Java中对数组的排序方法总汇分析
- Java 注解(一)
- java内存
- elasticsearch-2集群搭建的坑
- 彻底明白IP地址——IP地址的介绍
- cocos2dx 文件操作
- 快速搭建App框架
- 第13章部分习题答案
- Android_组合式控件_自定义属性