每一趟从待排序的数据元素中选出最小(或最大的)一个元素,
顺序放在已排好的序的数列的最后,直到全部待排序的数据元素排完。
选择排序是不稳定的排序方法。
选择排序的时间复杂度为 O(n^2)。
第一次需要检查n个元素,但随后检查的元素数依次为n - 1, n – 2, …, 2和1。平均每次检查的元素数为1/2 * n, 因此运行时间为 n * 1/2 * n,简单地写作 O(n^2)。
例:
34,4,56,17,90,65
4,34,56,17,90,65 第一轮 5次
4,17,56,34,90,65 第二轮 4次
4,17,34,56,90,65 第三轮 3次
4,17,34,56,65,90 第四轮 2次
4,17,34,56,65,90 第五轮 1次
代码如下:
ppublic static void main(String[] args) { int[] num = {34,4,56,17,90,65}; int minIndex = 0;//用于记录每次比较的最小值下标 //控制轮数 for(int i =0;i<num.length-1;i++) { minIndex =i; //每轮假设一个最小值下标 for(int j =i+1;j<num.length;j++) { if(num[minIndex]>num[j]) { minIndex=j; } } //判断需要交换的数下标是否为自己 if(minIndex!=i) { num[minIndex]=num[minIndex]+num[i]; num[i]=num[minIndex]-num[i]; num[minIndex]=num[minIndex]-num[i]; } } //输出结果 for(int x:num) System.out.println(x); }