选择排序
选择排序(java)
- 运行时间与输入无关。
- 数据移动是最少的
首先找到数组中最小的那个元素,其次将它和数组的第一个元素交换位置,再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置,如此反复,直到将整个数组排序
1 public class Selection 2 { 3 public void sort(Comparable[] a) 4 { 5 6 for(int i=0; i<a.length; i++) 7 { 8 int min=i; //最小元素的索引 9 for(int j=i+1; j<a.length; j++) 10 { 11 if(a[j]<a[min]) 12 min=j; 13 if(min!=i) 14 swap(a[j],a[min]); 15 } 16 } 17 } 18 } 19
选择排序(c/c++)
void select_sort(int a[]) { int min; for (int i=0; i <a.length ; i++) { min= i; for (int j=i+1; j < a.length; j++) { if (a[min] > a[j]) min = j; } if (min != i) swap(a[min],a[j]); } }
排序类算法模板
1 //排序算法类模板 2 public class Sort_template 3 { 4 public static void sort(Comparable[] a){} 5 6 //比较v和w 7 private static boolean less(Comparable v,Comparable w) 8 { 9 return v.compareTo(w)<0; 10 } 11 12 //交换a[i]和a[j] 13 private static void exch(Comparable[] a,int i,int j) 14 { 15 Comparable T; T=a[i];a[i]=a[j];a[j]=T; 16 } 17 18 打印 19 private static void show(Comparable[] a) 20 { 21 for(int i=0; i<a.length; i++) 22 System.out.print(a[i]+" "); 23 System.out.println(); 24 } 25 26 //测试数组元素是否有序 27 public static boolean isSorted(Comparable[] a) 28 { 29 for(int i=1; i<a.length; i++) 30 if(lessa[i], a[i-1]) return false; 31 return true; 32 } 33 public static void main(String[] args) 34 { 35 String a = sc.nextLine(); 36 sort(a); 37 assert isSorted; 38 show(a); 39 } 40 }
天道酬勤!