冒泡排序
冒泡排序算法每次交换相邻的两个数,如果左边的数小于右边的数,那么交换这两个元素,经过第一趟交换后,最大的元素肯定在最右边的位置上,然后对前n−1n−1个元素重复上述操作。
i指针控制每一趟交换的右边界,j指针控制每一趟交换中当前索引到的位置。
void Bubbble(int n){
for(int i = n-1; i >= 0; i--)
for(int j = 0; j < i; j++){
if(A[j] > A[j+1])
swap(A[j],A[j+1]);
}
}
选择排序算法
每次在未排序的数字中选择最大的那个数字放在数组末尾。
i指针控制当前未排序数字的右边界,也是当前未排序数字中最大的元素应该放的位置,我们使用idx代表当前最大元素的下标。每次在比较的时候我们只更新下标,避免频繁的数组元素交换。
void selectSort(int n)
{
for(int i = n - 1; i >= 0 ; i --)
{
int idx = 0;
for(int j = 0 ; j <= i ; j ++)
{
if(A[j] > A[idx])
idx = j;
}
swap(A[i],A[idx]);
}
}
选择排序:
选择排序算法每次在未排序的数字中选择最大的那个数字放在数组末尾。
i指针控制当前未排序数字的右边界,也是当前未排序数字中最大的元素应该放的位置,我们使用idx代表当前最大元素的下标。每次在比较的时候我们只更新下标,避免频繁的数组元素交换