选择排序:遍历整个列表的元素,找出最大的(最小的),并将其添加到一个新的列表里,然后找出第二大的(第二小的)放在新列表里,知道得到一个元素相同的有序列表。
java代码如下:
public static Integer[] selectionSort(Integer[] list){
if(list == null){
return null;
}
for (int i = 0; i < list.length; i++) {
//临时变量值
int temp = list[i];
//临时变量索引位
int index = i;
//拿第一个元素跟其他元素比较大小
for (int j = i+1; j < list.length; j++) {
//list[j] < temp是从小到大排序,list[j] > temp 从大到小排序
if(list[j] < temp){
//存储临时变量
temp = list[j];
//存储临时索引位
index = j;
}
}
//如果不一样,说明位置需要改变
if(index != i){
list[index] = list[i];
list[i] = temp;
}
}
return list;
}
算法规则:拿到列表第一个元素与其他元素比较,每一次比较后决定是否替换元素,重复下去直到与所有元素排序完。
算法时间:平均每次检查的元素为1/2*n,运行的次数为n次,运行时间为O(n x 1/2 x n)。大O表示法会省略常数。简写为O(n^2)