C语言数组练习 冒泡排序~

时间:2023-02-18 11:49:12

1:题目: 将数组16 25 9 90 23 降序排序

思路:
冒泡排序的基本原理,遍历和交换
第一轮循环;如果某个数字小于后面的数字,那么就交换
1 25 16 9 90 23
2 25 16 9 90 23
3 25 16 90 9 23
4 25 16 90 23 9
需要比较多轮,数组长度-1轮
每轮比较的次数(数组长度-1)-当前的轮数

#include <stdio.h>
#include <stdlib.h>
#define N 5
int main()
{
int i,j;
int temp;
int nums[N] = {16,25,9,90,23 };
//外层循环控制轮数
for (i = 0; i < N - 1; i++)
{
//内层循环控制每轮比较的次数
for (j = 0; j < N - i-1; j++)
//如果当前值小于后面一个数,则交换
{
if (nums[j] < nums[j + 1])
{
temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
printf("排序后的结果是: \n");
for (i = 0; i < N; i++)
{
printf("%d\t", nums[i]);
}

for (i = 0; i < N - 1; i++)
{
//内层循环控制每轮比较的次数
for (j = 0; j < N - i - 1; j++)
//如果当前值小于后面一个数,则交换
{
if (nums[j] > nums[j + 1])
{
temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
printf("排序后的结果是: \n");
for (i = 0; i < N; i++)
{
printf("%d\t", nums[i]);
}
}