package selectionSort; |
public class SelectionSortImpl { |
/* |
* 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法 |
*/ |
public static int [] selectionSort( int [] arr) { |
int len = arr.length; |
int temp = Integer.MAX_VALUE; |
int idx = - 1 ; |
for ( int j = 0 ; j < len; j++) { |
for ( int i = j; i < len; i++) { |
if (i == j) { |
temp = arr[i]; |
idx = i; |
} else if (arr[i] < temp) { |
temp = arr[i]; |
idx = i; |
} |
} |
/* |
* every time put the smallest element in the sorted order list via |
* exchanging the the first unsorted element with the mark smallest |
* element |
*/ |
if (idx != j) { |
arr[idx] = arr[j]; |
arr[j] = temp; |
} |
} |
return arr; |
} |
} |
package selectionSort; |
import java.util.Arrays; |
public class TestSelectionSort { |
public static void main(String[] args) { |
int [] arr = new int [] { 9 , 8 , 7 , 6 , 5 , 4 , 2 , 1 }; |
System.out.println( "The unsorted array is : " |
+ Arrays.toString(arr)); |
System.out.println( "The sorted array with bubble sort algorithm is : " |
+ Arrays.toString(SelectionSortImpl.selectionSort(arr))); |
} |
} |
/*运行结果 |
The unsorted array is : [9, 8, 7, 6, 5, 4, 2, 1] |
The sorted array with selection sort algorithm is : [1, 2, 4, 5, 6, 7, 8, 9] |
*/ |