简单选择排序

前言

爱炒股票短线的人,总是喜欢不断的买进卖出,想通过价差来实现盈利。但通常这种频繁操作的人,即使失误不多,也会因为操作的手续费和印花税过高而获利很少。还有一种做股票的人,他们很少出手,只是在不断的观察和判断,等到时机一

到,果断买进或卖出。他们因为冷静和沉着,以及交易的次数少,而最终收益颇丰。冒泡排序的思想就是不断地在交换,通过交换完成最终的排序,这和做股票短线频繁操作的人是类似的。我们可不可以像只有在时机非常明确到来时才出手的股票高

手一样,也就是在排序时找到合适的关键字再做交换,并且只移动一次就完成相应关键字的排序定位工作呢?这就是选择排序法的初步思想。(节选自大话数据结构)

代码

public static void swap(int[] test,int i,int j) {
		int temp = test[i];
		test[i] = test[j];
		test[j] = temp;
	}
public static void selectSort(int[] test) {
		int min = 0;
		for (int i = 0; i < test.length; i++) {
			min = i;
			for (int j = i + 1; j < test.length; j++) {
				if (test[min] > test[j]) {
					min = j;
				}
			}
			if (min != i) {//说明找到最小值,交换
				swap(test, i, min);
			}
		}
	} 

复杂度

从简单选择排序的过程来看,它最大的特点就是交换移动数据次数相当少,这样也就节约了相应的时间。应该说,尽管与冒泡排序同为O(n^2 ),但简单选择排序的性能上还是要略优于冒泡排序。

点赞