冒泡排序:
输入一系列数据,按照从大到小/从小到大输出。
代码
#include <stdio.h>
void jiaohuan(int* pa, int* pb)//交换两个变量的函数
{
int b = 0;
b = *pb;
*pb = *pa;
*pa = b;
}
void maopao(int arr[], int sz)
{
int a = 0;
int j = 0;
while (j < sz - 1)//进行所有数据比较的次数
{
for (a = 0; a < sz - 1; a++)//sz-1的原因是只需要进行n-1次比较
{
if (arr[a] > arr[a + 1])
{
jiaohuan(&arr[a], &arr[a + 1]);
}
}//对于所有数据进行比较
j++;
}
}
int main()
{
int arr[10] = { 0 };//假设最多只能排序
int sz = sizeof(arr) / sizeof(arr[0]);//求出数组元素个数
int i = 0;
for (i = 0; i < sz; i++)//输入数据
{
scanf("%d", &arr[i]);
}
maopao(arr,sz);//核心函数
for (i = 0; i < sz; i++)//打印结果
{
printf("%d ", arr[i]);
}
return 0;
}
解析:
一.对于冒泡排序的核心就是:
进行n-1次的从第一个到最后一位数据的比较
每一次比较都是把最大/最小的放在最后面;