依次在数组中从小到大找数,在数组的头从前往后放。
选择排序
平均时间复杂度:O(n²);最好情况:O(n²);最坏情况:O(n²);
空间复杂度:O(1)
排序方式:In-place
稳定性:不稳定
Implementation:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| /** * 选择排序 * @author hxr * @see https://github.com/MisterBooo/LeetCodeAnimation * 核心:依次在数组中从小到大找数,在数组的头从前往后放。数组从前向后遍历,数据从前往后放if (min!=i),遍历数组前边每次前进一下(i++)。 */ public class ChoiceSort { public static void main(String[] args) { int[] arr = {8,5,3,2,4}; for (int i = 0; i < arr.length - 1; i++) { //假定 i最小,利用下标。只是找到最小,具体的数值在遍历完数组才用,利用下标即可。 int min = i; //通过遍历数组寻找真的最小。 for (int j = i + 1; j < arr.length; j++) { if (arr[min] > arr[j]) { min = j; } } //将最小与未有序数据放到未有序的头 if (min!=i) { int temp2 = arr[min]; arr[min] = arr[i]; arr[i] = temp2; } } System.out.println(Arrays.toString(arr)); } }
|