选择排序算法

另一个经典排序算法,面试中也经常遇到,下面是详细解析。


算法思想:顾名思义,选择排序的思想是每次都从数组中选出一个最大的数或者最小的数添加到数组的起始位置(或末尾)。现在用升序排序作为例子来讲解,首先我们需要选择一个初始值最小值,一般选待排序的数组的首位作为首次排序的最小值。然后我们循环当前的数组,用数组中的每一位去和当前最小值比较,如果找到更小的数,则将更小的数和当前的最小值交换位置,这样我们变得到了整个数组中最小的数,并且放置到了数组的首位中,接下来我们从第二位开始,用第二位最为最小值去和剩余的数比较,如果有比第二位更小的数,则交换位置,如此循环,即可完成数组的排序。


时间复杂度:时间的开销主要集中在循环比较的次数上,总的次数 = (1+2+3+...+n+1+n),所以时间复杂度也是O(n^2)


代码实现:


/*
* 选择排序
*/
public static void selectSort(int[] numbers){
int temp = 0;
int size = numbers.length;
int min; //定义一个变量保存当前最小值
for(int i = 0;i<size - 1;i++){
min = numbers[i];
for(int j = i;j<size - 1;j++){
if(numbers[j] < min){
temp = numbers[j];
numbers[j] = min;
min = temp;
}
}
}
for(int num : numbers){
System.out.println(" "+num);
}
}


总结:选择排序还是很简单的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值