冒泡排序
思想:
(1)将相邻的两个数 Ai 和 A(i+1) 进行比较,如果 A(i+1) 较大,则交换 Ai 和 A(i+1) ;
(2)如果 Ai 较大,则不交换;
(3)每次排序后都将未排序好的最大的数冒到指定位置。
时间复杂度:O(N^2)
每次排序结果:
代码:
void bubble_sort(int* a, int n)
{
int flag = 0;
for (int i = 0; i < n-1; i++)
{
for (int j = 0; j < n-i-1; j++)
{
if (a[j] > a[j + 1])
{
swap(a[j], a[j + 1]);
flag = 1;
}
}
if (flag == 0)
break;
}
}
选择排序
思想:
(1)对数组设置begin和end,也就是第一个元素和最后一个元素的下标;
(2)遍历一遍数组找最大值的下标max和最小值下标min;
(3)将找到的最大值max和end的值进行交换,最小值min和begin的值进行交换;
(4)此时最大值和最小值已经位于最终的位置上;
(5)之后将begin++,end–,调整数组区间,继续进行上述的过程。
时间复杂度:O(N^2)
每次排序结果