<span style="font-size:18px;"><strong>一 算法思想:</strong></span> <span style="font-size:18px;"> 每次循环(第i次循环),选择数组a中未排序的部分,将其数值最小(大)的数值和第i位数值替换。以此类推,直到排序结束。</span> <span style="font-size:18px;"><strong>二 算法实现:</strong></span> public class selection { public static void sort(Comparable[] a) {//升序排列 int N=a.length; for(int i=0;i<N;i++) { //将a[i]和a[i+1,```N]中最小的元素交换 int min=i; for(int j=i+1;j<N;j++) { if(a[j].compareTo(a[min])<0) min=j; Comparable t=a[i]; a[i]=a[min]; a[min]=t; } } } } <span style="font-size:18px;"><strong>三 效率分析:</strong></span> <span style="font-size:18px;"> 对于长度为N的数组,选择排序要进行N^2/2次比较,N次交换</span> <span style="font-size:18px;"> 显然数组的输入顺序不会影响数组排序时间</span>