标签:style blog io ar color sp for on div
先上一段传统的选择排序的代码:
public class SortTest2 { public static void main(String[] args) { int[] a = new int[args.length]; for(int i=0; i<args.length; i++) { a[i] = Integer.parseInt(args[i]); } print(a); selectSort(a); print(a); } private static void selectionSort(int[] a) { int tmp; for(int i=0; i<a.length; i++) { for(int j=i+1; j<array.length; j++) { if(array[j]<array[j]) { tmp = array[j]; array[j] = array[i]; array[i] = tmp; } } } } private static void print(int[] a) { for(int i=0; i<a.length; i++) { System.out.print(a[i] + " "); } System.out.println(); } }
重点看selectionSort方法,当i=0时,依次和后面的每个数字比较,如果有比a[i]更小的数字,则二者交换位置,然后新的a[i]再和后面的数字比较,再有更小的再交换一次。
下面是改进的selectionSort代码:
private static void selectionSort(int[] a) { int n,tmp; for(int i=0; i<a.length; i++) { n = i; for(int j = n+1; j<a.length; j++) { if(a[j] < a[n]) { n = j; } } if(n != i) { tmp = a[n]; a[n] = a[i]; a[i] = tmp; } } }
其实没必要每次都交换,可以暂时先记住比a[i]更小的位置n,用a[n]再和后面的数字进行比较,有更小的再记住,一直比较到数组的最后,然后再和a[i]进行交换,可以提高效率。
标签:style blog io ar color sp for on div
原文地址:http://www.cnblogs.com/qql1986/p/4151441.html