选择排序(java)
选择排序的思想是:内外两层循环,第一层循环从第一个数开始到倒数第一个数,
第二层循环从上一层的数开始, 与上一层循环的数比较,如果小于则交换位置、
代码如下:
public class SelectSort { public int[] sort(int[] arrays) { int temp = arrays[0]; for (int i = 0; i < arrays.length - 1; i++) { for (int j = i + 1; j < arrays.length; j++) { if (arrays[j] <= arrays[i]) { temp = arrays[i]; arrays[i] = arrays[j]; arrays[j] = temp; } } } return arrays; } }
测试类如下:
package Test; import org.omg.CORBA.Current; import bubbleSort.BubbleSort; import insertSort.InsertSort; import quickSort.QuickSort; import selectSort.SelectSort; public class Test { public static void main(String[] args) { SelectSort selectSort = new SelectSort(); int[] array = createArray(); long ct1 = System.currentTimeMillis(); int[] arrays = selectSort.sort(array); long ct2 = System.currentTimeMillis(); display(arrays); System.out.println("所消耗的时间:" + (ct2 - ct1)); } public static void display(int[] arrays) { System.out.println("排序后数据:"); for (int i = 0; i < arrays.length; i++) { System.out.print(arrays[i] + "\t"); if ((i + 1) % 10 == 0) { System.out.println(); } } System.out.println(); } public static int[] createArray() { int[] array = new int[100000]; System.out.println("数组中元素是:"); for (int i = 0; i < 100000; i++) { array[i] = (int) (Math.random() * 1000); System.out.print(array[i] + "\t"); if ((i + 1) % 10 == 0) { System.out.println(); } } System.out.println(); return array; } }
算法效率和冒泡排序是一样的,进行100000个数的排序要14000ms。