用c语言写一个冒泡排序,并注释
时间: 2023-03-21 15:01:03 浏览: 133
// 冒泡排序是一种常用的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。 // 下面是用C语言编写的冒泡排序程序:/* 冒泡排序算法 */
void bubble_sort(int array[], int n) {
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n - i - 1; j++) {
if (array[j] > array[j + 1]) {
// 交换a[j]和a[j+1]
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
相关问题
用C语言写一个冒泡排序并给出注释
```c
#include <stdio.h>
void bubble_sort(int arr[], int n) { // 定义冒泡排序函数
int i, j, temp;
for (i = 0; i < n - 1; i++) { // 外层循环控制比较轮数
for (j = 0; j < n - 1 - i; j++) { // 内层循环控制每轮比较次数
if (arr[j] > arr[j + 1]) { // 如果前一个数比后一个数大,交换它们
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[] = {5, 3, 2, 4, 1}; // 待排序数组
int n = sizeof(arr) / sizeof(int); // 数组长度
int i;
printf("原数组:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
bubble_sort(arr, n); // 调用冒泡排序函数
printf("排序后:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
注释:
1. `void bubble_sort(int arr[], int n)`:定义冒泡排序函数,参数为待排序数组和数组长度。
2. `for (i = 0; i < n - 1; i++)`:外层循环控制比较轮数,每轮比较后,数组中最大的数会被放到最后一个位置,因此比较轮数只需要进行n-1次。
3. `for (j = 0; j < n - 1 - i; j++)`:内层循环控制每轮比较次数,每轮比较只需要比较前n-1-i个数,因为最后i个数已经排好了序。
4. `if (arr[j] > arr[j + 1])`:如果前一个数比后一个数大,交换它们,这样可以使得每轮比较结束后,最大的数被放到了最后一个位置。
5. `int n = sizeof(arr) / sizeof(int)`:计算数组长度。
6. `bubble_sort(arr, n)`:调用冒泡排序函数对数组进行排序。
7. `printf("%d ", arr[i])`:输出数组元素。
用C语言写一个冒泡排序,并详细注释
#include <stdio.h>int main(void)
{
int array[100], n, c, d, swap;
printf("输入数组元素个数 :");
scanf("%d", &n);
printf("输入 %d 整数\n", n);
for (c = 0; c < n; c++)
scanf("%d", &array[c]);
for (c = 0 ; c < ( n - 1 ); c++)
{
for (d = 0 ; d < n - c - 1; d++)
{
if (array[d] > array[d+1]) /* 比较相邻的元素,如果前者大于后者,交换它们 */
{
swap = array[d];
array[d] = array[d+1];
array[d+1] = swap;
}
}
}
printf("排序后的数组:\n");
for (c = 0; c < n; c++)
printf("%d ", array[c]);
return 0;
}这是一个用C语言实现的冒泡排序程序,它会遍历数组中的所有元素,比较相邻的元素,如果前者大于后者,则交换它们的位置,直到将数组元素排序完毕。
阅读全文