前言
爱炒股票短线的人,总是喜欢不断的买进卖出,想通过价差来实现盈利。但通常这种频繁操作的人,即使失误不多,也会因为操作的手续费和印花税过高而获利很少。还有一种做股票的人,他们很少出手,只是在不断的观察和判断,等到时机一
到,果断买进或卖出。他们因为冷静和沉着,以及交易的次数少,而最终收益颇丰。冒泡排序的思想就是不断地在交换,通过交换完成最终的排序,这和做股票短线频繁操作的人是类似的。我们可不可以像只有在时机非常明确到来时才出手的股票高
手一样,也就是在排序时找到合适的关键字再做交换,并且只移动一次就完成相应关键字的排序定位工作呢?这就是选择排序法的初步思想。(节选自大话数据结构)
代码
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 ),但简单选择排序的性能上还是要略优于冒泡排序。