经典排序算法——选择排序

53 篇文章 2 订阅
19 篇文章 0 订阅

选择排序

第1趟,在待排序记录array[0]~array[array.lenght-1]中选出最小的记录,将它与array[0]交换;第2趟,在待排序记录array[1]~array[array.lenght-1]中选出最小的记录,将它与array[1]交换;以此类推,第i趟在待排序记录array[i]~array[array.lenght-1]中选出最小的记录,将它与array[i]交换,使有序序列不断增长直到全部排序完毕。

时间复杂度:O(n^2)。

因为有跳跃式的比较和交换,所以这个算法不稳定。

让我门来分析一下下面的例子:


我们用 java 来实现一下这个算法

public static void selectSort(int[] array){
		int temp = 0;
		int minIndex = 0;
		for(int i = 0;i < array.length;i++){//比较的趟数
			minIndex = i;
			for(int j = i+1;j < array.length;j++){//每次比较它前面的都已经排好序了,在未排好序的值里面找出最小值,赋给最前面的额那个数。
				if(array[minIndex] > array[j]){
					temp = array[minIndex];
					array[minIndex] = array[j];
					array[j] = temp;
				}
			}
		}
	}

测试:

	public static void main(String[] args){
		int[] array = {23,31,12,21,3,1,5};
		selectSort(array);
		show(array);	
	}
结果:1 3 5 12 21 23 31 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值