选择排序也是常见的排序算法中常见的之一。选择排序原理是:第一轮是找到数组中最小(大)的一个元素排在起始位置。每一轮都遵循这个原理,直到所有元素排列有序为止。
动图展示:
了解了原理,那么代码写起来就简单了。
思路:n个数进行排列,最多需要排n-1轮。如果我们按小到大来排序,假设首位置元素最小,那么每一轮结束后首位置都会多一个元素产生,进而形成有序序列,进而需要排序的元素从k+1位置起到第n个元素。
ok,so!代码如下:
public class SelectSort {
public static void main(String[] args) {
int[] arr={10,4,5,3,6,9,2,7,8};
int[] ints = SelectMethod(arr);
System.out.println(Arrays.toString(ints));
}
public static int[] SelectMethod(int[] arr){
for (int i=0;i<arr.length-1;i++){//循环n-1轮
int least=i;//假设首位置最小
for (int j=i+1;j<arr.length;j++){
if (arr[least]>arr[j]){//比较一轮找最小元素
arr[least]=arr[least]^arr[j];
arr[j]=arr[least]^arr[j];
arr[least]=arr[least]^arr[j];
}
}
}
return arr;
}
}
(补充交换元素使用^异或逻辑符号,不会在内存中开辟空间,效率高一点!!!想不明白可以用一个空变量转换下,结果一样!!!)先这样,时间空间复杂度后续更新。有问题欢迎留言。