稳定垫底型选手 选择排序-SelectionSort

核心思想

1,遍历数组,找出其中最小(或最大)的元素。和第一个元素交换值,确定排序后第一个元素的值。

2,除去已经排序好的元素,再对剩余的元素进行遍历,找到其中最小(或最大)的元素,和剩余元素的第一个元素交换值

3,重复步奏2,直到数组中只剩下一个未排序的数,排序完成。

时间复杂度 O(n^2)

代码实现

	public static void selectionSort(int[] arrays){
		int len = arrays.length;
		for(int i = 0; i < len; i ++){
			//寻找[i,0)区间的最小值
			int minIndex = i;
			for(int j = i + 1; j < len; j++){
				if(arrays[j] < arrays[minIndex]){
					minIndex = j;
				}
			}
			//最小值和第一个值交换
			int temp = arrays[i];
			arrays[i] = arrays[minIndex];
			arrays[minIndex] = temp;
		}
	}

总结

选择排序的思想非常简单,缺点也非常明显,对于任何一个数组,选择排序两层循环,每一层循环都必须完全的执行完成。正是因为如此,选择排序的效率在任何情况下都是非常差的O(n^2)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值