小白学算法2.2——选择排序
标签: 小白学算法
小白学算法2.x全部为排序算法
本节所有排序算法按照从小到大排序
1.选择排序算法
选择排序属于初级排序,时间复杂度为
O(n2)
。n
个数进行选择排序,需要n-1
次排序,每次排序把最小的数和最左边的数进行交换。
2.选择排序实现
void bubbleSort(int* A, int n)
{
for (int i=0; i<n-1; i++)//排n-1次
{
int min = i;
for (int j=i+1; j<n; j++)//找出最小数的下标
if (A[j] < A[min])
min = j;
swap(A, min, i);//交换A[min]和A[i]元素的值
}
}
3.总结
- 对于长度为
n
的数列,选择排序需要大约 n2/2 次比较和n
次交换 - 选择排序的运行时间和输入无关
- 选择排序移动元素的次数是最少的
- 选择排序是不稳定排序
- 选择排序属于初级排序,时间复杂度为 O(n2) ,当数据量较大时,建议采用高级排序
- 随机数据量较大时,选择排序比冒泡排序快,笔者猜测冒泡排序交换次数太多,导致运行时间较长