选择排序:假设需要进行排序的有n个数,每次选择一个位置,依次与后面的数进行比较,确定该位置所存的数。假设排序为升序,依次选择从前到后的位置,每次都与其后面的所有数进行比较,选出最小值,放在所定位置中。
选择排序的最好时间复杂度、最差时间复杂度和平均时间复杂度均为O(n^2)。
选择排序的最好空间复杂度为0,最差空间复杂度为O(n),平均空间复杂度为O(1)。
选择排序和冒泡排序的时间复杂度和空间复杂度是一样的。
public static void selectSort(int[] arr)
{
for(int x = 0; x < arr.length - 1; x++)
{
for(int y = x + 1; y < arr.length; y++)
{
if(arr[x] > arr[y])
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}
- 选择排序还有一种优化的方法,每次比较记录较小数的位置,直到找到最小值,才进行位置的互换。优化后的算法能够减少交换操作的次数。