1.冒泡排序图解
2.手写过程
3.核心思想
我们每次比较两个值的大小,按我们想要的顺序,决定怎么去移动。
4.代码实现
1.准备工作
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define n 10
int main()
{
int a[n];
for (int i = 0; i < n; i++)
{
a[i] = rand() % 50 + 1;
}
for (int i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
return 0;
}
2.核心代码
for (int i = 0; i < n-1; i++)//决定冒几次泡
{
for (int j = 0; j < n - i - 1; j++)//去决定一趟冒几次,得减一啊,不然会越界
{
if (a[j] > a[j + 1])
{
int temp = a[j];
a[j] = a[j + 1];//小的去前面
a[j + 1] = temp;
}
}
}
3.最终代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define n 10
int main()
{
int a[n];
srand(time(0));
for (int i = 0; i < n; i++)
{
a[i] = rand() % 50 + 1;
}
for (int i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
for (int i = 0; i < n-1; i++)
{
for (int j = 0; j < n - i - 1; j++)
{
if (a[j] > a[j + 1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
printf("\n");
for (int i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
return 0;
}
4.结果展示
12 28 43 46 39 49 16 12 14 2
2 12 12 14 16 28 39 43 46 49
D:\vs2019 c\算法分析\Debug\算法分析.exe (进程 14024)已退出,代码为 0。
按任意键关闭此窗口. . .
5.总结
愿与诸君共同进步