先简述选择排序,然后上代码
进行选择排序就是将所有的元素扫描一遍,从中挑选(或者说是选择,这正是这个排序名字的由来)最小的一个元素,将这个最小的元素与最左边的元素交换位置 ,现在最左边的元素就是有序的了,不需要再交换位置了。
再次扫描元素队列时,就从第二个位置开始,还是寻找最小的元素,然后与第二个位置交换位置。
这个过程一直持续到所有的元素都排定。
选择排序类:
package com.dxx.order; public class SelectSort { private int arrs[]; public SelectSort(int[] arrs) { super(); this.arrs = arrs; } public void sortArrs(){ int len = arrs.length; int temp = 0; //进行len-1次循环,每次循环都将在未排序的元素中找出最小的放在已排序的末端 for(int i=0;i<len-1;i++){ temp = i; //进行len-1-i次循环,找到未排序元素中最小的元素的下标; for(int j=i;j<len-1;j++){ temp = arrs[j+1]>arrs[temp] ?temp:j+1; } if(temp != i){ //将最小的元素与下标为i的元素交换位置 int change; change = arrs[temp]; arrs[temp] = arrs[i]; arrs[i] = change; } } } public void printArrs(){ for(int i :arrs){ System.out.print(i + " "); } System.out.println(); } }
主程序类:
package com.dxx.order; public class MainTest { public static void main(String[] args) { int arrs[] = {1,3,2,5,4,8,6,7}; SelectSort selectSort = new SelectSort(arrs); selectSort.printArrs(); selectSort.sortArrs(); selectSort.printArrs(); } }