1.冒泡排序(从小到大排序)
冒泡排序虽然在实际生活中没用,但是作为教学意义上来讲,是个让人入门排序算法的好思想。
flag变量用来判断是否排序完毕,排序完就不用接着下一轮排序了。
//冒泡排序
void BubbleSort(int* a, int n)
{
for (int j = 0; j < n; j++)
{
// 单趟
int flag = 1;//排完了
for (int i = 1; i < n - j; i++)
{
if (a[i - 1] > a[i])
{
Swap(&a[i - 1], &a[i]);
flag = 0;//没排完
}
}
if (flag == 1)//排完了
{
break;
}
}
}
2.选择排序(从小到大排序)
//选择排序
void SelectSort(int* a, int n)
{
for (int i = 0;i < n - 1;i++)
{
int min = a[i];
int k = i;//最小值的下标
for (int j = i + 1;j < n;j++)
{
if (a[j] < min)
{
min = a[j];
k = j;
}
}
swap(&a[i], &a[k]);
}
}
思想:每次选出最小值位置的值和初始位置的值进行交换,初始位置会由0下标逐渐增长。