SelectionSort

选择排序,同样先来一个图

源码如下

package Love;

/**
* Hello world!
*/

public class App {

public static void selectionSort(int[] arr) {
int len = arr.length;
int temp = 0;
for (int i = 0; i < len - 1; i++) {
int min = i;
for (int j = min + 1; j < len; j++) {
if (arr[j] < arr[min]) {
min = j;
}
}
if (min != i) {
temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
}

public static void main(String[] args) {
int arr[] = {4, 6, 3, 9, 6, 5, 1, 7, 6, 5, 2, 8};
selectionSort(arr);
for(int a : arr){
System.out.print(a + " ");
}

}
}

这里每轮外层循环得到的最小值都交换到最左边,内层循环每次找到最小值所在的index,如果index和当前i相同,说明当前arr[i]就是最小值,不需要交换;如果不同,把最小值换到i位置,接着i++,继续找右边下一批的最小值

发表回复