简单选择排序算法原理及JAVA实现
2015-07-27 11:28
736 查看
简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1)
复杂度: 所需进行记录移动的操作次数较少 0--3(n-1) ,无论记录的初始排列如何,所需的关键字间的比较次数相同,均为n(n-1)/2,总的时间复杂度为O(n2);
空间复杂度 O(1)
算法改进:每次对比,都是为了将最小的值放到第一位,所以可以一比到底,找出最小值,直接放到第一位,省去无意义的调换移动操作。也可以换一个方向,最后一位与前面每一个比较,每次使最大值沉底,最后一位向前推进。
JAVA源代码(成功运行):
自己理解的写法:
转载于:http://blog.csdn.net/xuxurui007/article/details/7640522
复杂度: 所需进行记录移动的操作次数较少 0--3(n-1) ,无论记录的初始排列如何,所需的关键字间的比较次数相同,均为n(n-1)/2,总的时间复杂度为O(n2);
空间复杂度 O(1)
算法改进:每次对比,都是为了将最小的值放到第一位,所以可以一比到底,找出最小值,直接放到第一位,省去无意义的调换移动操作。也可以换一个方向,最后一位与前面每一个比较,每次使最大值沉底,最后一位向前推进。
JAVA源代码(成功运行):
public static void main(String[] args) { int[] array = { 49, 38, 65, 97, 76, 13, 27 }; selectSort(array); for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } } public static void selectSort(int[] array){ int temp; int min; for(int i=0;i<array.length;i++){ min=i; for(int j=min+1;j<array.length;j++){ if(array[j]<array[min]){ min=j; } } if(min!=i){ temp=array[min]; array[min]=array[i]; array[i]=temp; } } }
自己理解的写法:
/** * 简单选择排序 * */ public class SimpleSelectSort { public static void main(String[] args) { int[] array = { 49, 38, 65, 97, 76, 13, 27 }; selectSort(array); for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } } public static void selectSort(int[] array){ int minIndex; int tempValue; for(int i=0;i<array.length;i++){//用于记录最小值得位置 minIndex=i; for(int j=minIndex+1;j<array.length;j++){//从最小值的下个位置开始比较 if(array[minIndex]>array[j]){ minIndex=j; } } if(minIndex!=i){//如果最小值没有变化不互调位置 tempValue=array[minIndex]; array[minIndex]=array[i]; array[i]=tempValue; } } } }
转载于:http://blog.csdn.net/xuxurui007/article/details/7640522
相关文章推荐
- java中类型int转化为Byte
- 排序算法分析(JAVA实现)
- java读取图片的(尺寸、拍摄日期、标记)等EXIF信息
- Java IO包装流如何关闭?
- Java字节码指令集的使用详细
- Eclipse 在开发中使用到的快捷键很实用
- Java Socket编程
- 亲测好用,保存 myeclipse反编译插件安装
- Eclipse中运行MapReduce程序时控制台无法打印进度信息的问题
- Eclipse UI Theme调整
- Java线程池
- 如何在Eclipse中查看Java类库的源代码以及相应的api
- JAVA调用CMD命令
- Java启动线程的方法
- Struts学习总结之配置文件
- 如何搭建Spring4项目
- Java利用序列化实现对象深度clone的方法
- Java内部类的继承(全)
- MyEclispe2014和MyEclipse 10 同时破解激活
- java多线程-专题-聊聊并发(十)生产者消费者模式