选择排序
选择排序在宏观上,可以看成是逆着进行排序,我们知道,冒泡排序,每进行一轮排序之后,数组中最大的元素会走到数组的最后一个位置,对于选择排序来说,每进行一次排序,数组中最小的元素都会走到第一个位置,所以。我们总共需要进行n-1轮排序。最后一个元素已经是最大的了不用再进行判断。
1.每一轮排序时都让i指针所指的元素跟后边元素进行比较,
2.如果i大于j所指的元素,就让i和j的值互换,
3.始终保持i指针所指的是当前待排数组中最小的那个元素,
4.一轮遍历完成之后,i当前所指的元素就是最小元素,此时i++,重复上面的步骤,遍历剩下的元素。
依次遍历,两两交换,最终就可以得到一个有序的序列。
代码如下:
//selectSort
public static void selectSort(int[] array){
int n = array.length;
for(int i = 0;i<n-1;i++){
for(int j = i + 1;j<n;j++){
if(array[i] > array[j]){
int temp = array[i];
array[i] =array[j];
array[j] = temp;
}
}
}
}
算法复杂度
稳定性:不稳定
时间复杂度 | 空间复杂度 |
---|---|
平均复杂度:O(n^2) 最坏复杂度:O(n^2) | O(1) |