java实现选择排序
来源:互联网 发布:淘宝买家如何删除评价 编辑:程序博客网 时间:2024/05/19 04:02
选择排序的思想很简单:
1.程序将记录定位在第1个数据上,拿第1个数据和它后面的每个数据进行比较,如果第一个数据大于后面某个数据,交换它们。
2.程序将记录定位在第2个数据上,拿第2个数据和它后面的每个数据进行比较,如果第一个数据大于后面某个数据,交换它们。
3.程序将记录定位在第3个数据上,拿第3个数据和它后面的每个数据进行比较,如果第一个数据大于后面某个数据,交换它们。
一直到最后一个元素结束,整个数据列就成顺序了的。
public static void main(String[] args) {int[] data = { -1, -5, 4, 2, 0, 3, -55 };printArray(data);// selectSort(data);betterSelectSort(data);printArray(data);}
public static void printArray(int[] data) {System.out.print("[");for (int i = 0; i < data.length; i++) {if (i != data.length - 1) {System.out.print(data[i] + ",");} else {System.out.println(data[i] + "]");}}}
public static void selectSort(int[] data) {for (int i = 0; i < data.length - 1; i++) {for (int j = i + 1; j < data.length; j++) {if (data[i] > data[j]) {swap(data, i, j);}}}}
public static void swap(int[] data, int i, int j) {int temp = data[i];data[i] = data[j];data[j] = temp;}
输出结果:
[-1,-5,4,2,0,3,-55][-55,-5,-1,0,2,3,4]
对于上面算法的实现,有一个很大的问题,程序一旦发现某个数据比第1个数据小,立即交换。但是很有可能,后面有比第1个数据的值更小的,所以优化的思想在于:用一个角标记录最小的,最后在交换。这样就减少了交换次数,提高了效率。
public static void betterSelectSort(int[] data) {for (int i = 0; i < data.length - 1; i++) {int miniIndex = i; //定义角标for (int j = i + 1; j < data.length; j++) {if (data[miniIndex] > data[j]) {miniIndex = j; //找到比第1个数据小的值,就交换角标。}}if (miniIndex != i) {swap(data, miniIndex, i);}}}
阅读全文
0 0
- java实现选择排序
- Java实现选择排序
- Java实现选择排序
- 选择排序java实现
- 选择排序(Java实现)
- 选择排序 Java实现
- Java 实现选择排序
- java实现选择排序
- JAVA实现选择排序
- JAVA 实现选择排序
- java 实现选择排序
- java实现选择排序
- java实现选择排序
- java实现选择排序
- 选择排序,Java实现
- java 实现选择排序
- java实现选择排序
- 选择排序(java实现)
- Loadrunner 获取ResponseBody,并去除乱码打印出来
- java io流中为什么要序列化和反序列化
- JavaScript编译
- Maven项目中pom文件分析
- Python Random模块使用
- java实现选择排序
- 在Oracle与mysql中自动生成uuid
- 多线程(6)
- 業務システムの開発ドキュメント標準化 第5回:詳細設計書(後半)
- 获取微信返回事件时的感悟
- 将JSON对象和数组合并成一个JSON对象
- TQ2440的FCLK,HCLK,PCLK,UCLK时钟频率设置 (2013-08-22 09:14:19)转载▼
- [Leetcode] 259. 3Sum Smaller 解题报告
- 异常处理