📜  C测验– 109 |问题2(1)

📅  最后修改于: 2023-12-03 15:30:15.302000             🧑  作者: Mango

C测验– 109 |问题2

本题涉及C语言中的数组和指针。

题目描述

请写一个函数,将一个由整数组成的数组按照从小到大的顺序排序。

void bubble_sort(int *array, int size)
参数
  • array:整数数组的指针,需要排序。
  • size:数组中元素的数量。
返回值

无返回值,函数直接修改传入的数组。

示例
int array[] = {9, 2, 5, 1, 6, 4, 8, 3, 7};
bubble_sort(array, 9);
for (int i = 0; i < 9; i++) {
    printf("%d ", array[i]);
}

输出:

1 2 3 4 5 6 7 8 9
解题思路

本题采用冒泡排序法,每次将相邻的两个元素进行比较,如果前一个元素比后一个元素大,就将它们交换。重复这个过程,直到元素全部排序完毕。

void bubble_sort(int *array, int size) {
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (array[j] > array[j+1]) {
                int temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
            }
        }
    }
}
注意事项

本题使用的是指针传递数组,因此在函数内修改数组的值会直接影响到调用它的函数中的数组。因此,在调用该函数时,需要注意保证数组的内容被正确地传入。

同时,为了保证与其他代码无关,建议在函数实现前,先对传入的指针和数组大小进行验证,以防出现非法内存访问或数组越界等错误。