选择排序:对冒泡排序的简化升级, 冒泡排序是不断比较两个相邻元素的大小,进行交换,
选择排序是在每一轮中默认将第一个元素的位置作为初始值,将后面的元素大小和初始值不断进行比较,不断将比初始值小的元素的位置和初始值位置进行交换,在该轮次结束后,将最小元素的和第一个元素进行交换
每执行完一个轮次,初始位置向后移一位。
优点:省却了元素交换次数(交换的时间复杂度为O n) n-1次,冒泡交换复杂度为O n^2
元素比较次数和冒泡排序相同(比较的时间复杂度都是O n^2)
public class SelectSort { public static void main(String[] args) { int[] arr = new int[]{3,1,543,55,3,333,65,6,9,0,4}; Select(arr); } public static void Select(int ... arr){ for (int i = 0;i < arr.length - 1;i++){ int min = i; for (int j = i;j <= arr.length - 1;j++){ if (arr[j] < arr[min]){ min = j; } } if (min != i){ int temp = arr[i]; arr[i] = arr[min]; arr[min] = temp; } } System.out.println(Arrays.toString(arr)); } }
显示效果: