java排序算法总结
来源:互联网 发布:城市安防监控网络 编辑:程序博客网 时间:2024/04/30 06:37
java 常见的排序算法:冒泡排序,快速排序,选择排序等;
1.冒泡排序:概念--重复的比较要排序的序列,每次比较相邻的两个元素,直到排序完成。
排序步骤如下:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
code example:
public class BubbleSort{ public void sort(int[] a) { int temp = 0; for (int i = a.length - 1; i > 0; --i) { for (int j = 0; j < i; ++j) { if (a[j + 1] < a[j]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } }}
2.快速排序:它的基本思想---通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。
一趟快速排序的算法是:(摘自百科)
1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;
2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];
3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换;
4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换;
5)重复第3、4步,直到i=j; (3,4步中,没找到符合条件的值,即3中A[j]不小于key,4中A[i]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候i, j指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。
code example:
public static void quickSort(int[] numbers, int start, int end) { if (start < end) { int base = numbers[start]; // 选定基准值 int temp; // 记录临时中间值 int i = start, j = end; do { while ((numbers[i] < base) && (i < end)) i++; while ((numbers[j] > base) && (j > start)) j--; if (i <= j) { temp = numbers[i]; numbers[i] = numbers[j]; numbers[j] = temp; i++; j--; } } while (i <= j); if (start < j){ quickSort(numbers, start, j); } if (end > i) { quickSort(numbers, i, end); } } }
3.选择排序:它的工作原理是每一次从待排序的数据中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
排序步骤:
1.首先从未排序序列中找到最小的元素,放到排序序列的起始位置;
2.接着再从剩下的未排序序列中找到最小元素,放到排序序列的末尾,以此类推直到排序结束;
code example:
public static void selectSort(int[]a){ int minIndex=0; int temp=0; if((a==null)||(a.length==0)) return; for(int i=0;i<a.length-1;i++) { minIndex=i;//无序区的最小数据数组下标 for(intj=i+1;j<a.length;j++) { //在无序区中找到最小数据并保存其数组下标 if(a[j]<a[minIndex]) { minIndex=j; } } if(minIndex!=i) { //如果不是无序区的最小值位置不是默认的第一个数据,则交换之。 temp=a[i]; a[i]=a[minIndex]; a[minIndex]=temp; } }}
0 0
- Java排序算法总结
- java 排序算法总结
- Java排序算法总结
- java排序算法总结
- Java排序算法总结
- java 排序算法总结
- Java排序算法【总结】
- Java排序算法总结
- Java排序算法总结
- 排序算法总结(java)
- Java排序算法总结
- 排序算法总结(Java)
- 排序算法总结-java
- 排序算法总结--Java
- [java]排序算法总结
- Java排序算法总结
- java排序算法总结
- java排序算法总结
- Java final关键字
- github
- oracle教程1--数据库基础知识
- gpg加解密及签名
- mapminmax数据归一化(第一次完整看好help文档)
- java排序算法总结
- std::accumulate(容器求和)
- 手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)
- c++学习笔记
- mysql练习题二
- 【Js应用实例】限制上传图片大小
- JavaSE_23th_final关键字
- draw9patch.bat配置for Windows
- opencv学习笔记