目的:将输入的数组按照从小到大冒泡排序。
思路:
① 从第1个数开始, 依次与后一个数比较,将最大的一个数放在最后;
② 继续从第1个数开始,依次与后一个比较,将最大的一个数倒数第二个;
③ 依次类推;
int bubble(int a[], int n)
{
int temp;
int i,j;
for(i = 0; i< n-1;i++)
{
for(j = 0;j < n-1-i;j++)
{
if(a[j] > a[j+1])
{
temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
return 0;
}
3. 算法测试
/**
* @brief 测试冒泡程序
* @author mculover666
* @date 2020/04/09
*/
#include<stdio.h>
int bubble(int a[], int n);
int main()
{
int i;
int nums[10];
for(i = 0;i < 10;i++)
{
nums[i] = 9-i;
printf("%2d ", nums[i]);
}
printf("\n");
//排序功能
bubble(nums, 10);
//打印排序后的数
for(i = 0;i < 10;i++)
{
printf("%2d ", nums[i]);
}
printf("\n");
return 0;
}
int bubble(int a[], int n)
{
int temp;
int i,j;
for(i = 0; i< n-1;i++)
{
for(j = 0;j < n-1-i;j++)
{
if(a[j] > a[j+1])
{
temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
return 0;
}
编译:
gcc test.c -o test.o
执行结果: