标签:int 固定 i+1 分数 str 排列 tin 复杂度 ack
选择排序法,顾名思义,就是把特定的数据选择出来进行排序.
选择排序法有两种方式
以由小到大排序举例,当排序时候,扫描整个数据,拿第一个依次与其他做比较,如果其他数据比第一个大,或者相等,那么就不交换,如果其他数据比第一个数小,那么就交换二者的位置,扫描结束后,则从第二个数开始,依次扫描.
方法分析
综合以上的情况,选择排序法,适用于数据量小,或者有部分数据以及排过序的情况.
代码示例(由小到大排序)
import java.util.Random; /** * 算法大神之路----排序(选择排序法) */ public class Study02 { public static void main(String[] args) { //新建一个数组 int[] arr = new int[6]; Random r = new Random(); for (int i = 0; i < arr.length; i++) { //使用随机数给数组赋值 arr[i] = r.nextInt(50); } System.out.print("原数组为:"); paint(arr); System.out.println("-----排序-----"); //选择排序法对数据进行排序 for (int i = 0; i <arr.length; i++) { System.out.print("第"+(i+1)+"次扫描"); for (int j = i+1; j < arr.length; j++) { if (arr[j]>=arr[i]) { //拿最前端数据依次同其他数据比较,当其他数据比最前端大的时候,那么不变 }else{ //当其他数据比第一个数据小的时候.交换位置 int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } paint(arr); } } //将数组数据打印至控制台 public static void paint(int[] arr){ for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+"\t"); } System.out.println(); } }
控制台打印结果:
原数组为:29 15 2 3 37 39 -----排序----- 第1次扫描2 29 15 3 37 39 第2次扫描2 3 29 15 37 39 第3次扫描2 3 15 29 37 39 第4次扫描2 3 15 29 37 39 第5次扫描2 3 15 29 37 39 第6次扫描2 3 15 29 37 39
总结:选择排序法不管是否中途已经排完毕,都需要经过固定次的扫描,相对于冒泡排序法,扫描次数不能减少.
标签:int 固定 i+1 分数 str 排列 tin 复杂度 ack
原文地址:http://www.cnblogs.com/wangxinblog/p/7348538.html