排序算法之
选择排序
首先通过n-1次比较,从n个数中找出最小的, 将它与第一个数交换——第一趟选择排序,结果最小的数被安置在第一个元素位置上。 再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换——第二趟选择排序。 重复上述过程,共经过n-1趟排序后,排序结束。
/* * 1.排手机也是一种选择排序(第一个手机与后面的手机比较找出查的手机与之交换) * 第一个与第二个比。如果第一个比第二个小的话,则不动,如果第二个比第一小。则用第二个与后面的比,依次类推 */ import org.junit.Test; public class Xuanze { public void print(int a[]){ for(int s:a){ System.out.print(s+" "); } System.out.println(); } public void swap(int[] a,int i,int j){ int temp = a[i]; a[i]= a[j]; a[j] = temp; } @Test public void xuanze(){ int a[] = {21,22,34,6,86}; print(a); for(int i=0;i<a.length-1;i++){ int k=i; for(int j=i+1;j<a.length;j++){ if(a[k]>a[j]){//如果第二个比第一个小,则用第二个与后面去比较 k=j; } } if(i!=k){//交换 swap(a, i, k); } } print(a); } @Test public void selectSort0(){//排手机法 int a[]={21,25,49,25,16,8,-1,0,23,44}; print(a); for(int i=0;i<a.length-1; i++){//趟数:第i个排 //第i趟:让第i个人依次找他后面的每一个人,如果后者的手机更烂就跟他换,依此类推直到最后一个同学 for(int j=i+1;j<a.length;j++){ if(a[i]>a[j]){ swap(a,i,j);//换手机: 把当前最小值的元素和a[i]交换 } } } print(a); } }