说明
- 整个数组是以首地址开头的一块连续的内存单元。如有字符数组char c[10],设数组c的首地址为2000,也就是说c[0]单元地址为2000。则数组名c就代表这个首地址。
- 排序规则:总的排序次数比数组中的元素少1(j = 0~input_len-1)
- 每一次的排序次数比上一次少1(i = 0~input_len-1-j);
- 比较都时候前一个元素和后一个元素依次比较
步骤
- 手动输入要排序的序列
- 从小到大排序
- 代码如下:
#include<stdio.h>
#include<string>
void bubble_sort(int *input,int input_len)//取数组地址
{
printf("排序前的数组是:");
for (int j = 0; j < input_len; j++)
{
printf("%d, ", input[j]);
}
printf("开始排序。。。\n");
int temp;
for (int j = 0; j < input_len-1; j++)
{
for (int i = 0; i < input_len - 1-j ; i++)
{
if (input[i] > input[i + 1])
{
temp = input[i];
input[i] = input[i + 1];
input[i + 1] = temp;
}
}
}
printf("排序完成后的数组为:");
for (int j = 0; j < input_len; j++)
{
printf("%d, ", input[j]);
}
}
int main()
{
int input[5];
int input_len = sizeof(input) / sizeof(input[0]);
printf("数组中元素个数input_len = %d\n", input_len);
printf("请输入数组:\n");
for (int i = 0; i < input_len; i++)
{
scanf_s("%d", &input[i]);
}
bubble_sort(input,input_len);//直接传数组名代表数组首地址
return 0;
}
本人大部分代码开放免费,用于交流学习,有bug时还望指出,请勿直接抄袭,谢谢!