📅  最后修改于: 2023-12-03 15:30:15.302000             🧑  作者: Mango
本题涉及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;
}
}
}
}
本题使用的是指针传递数组,因此在函数内修改数组的值会直接影响到调用它的函数中的数组。因此,在调用该函数时,需要注意保证数组的内容被正确地传入。
同时,为了保证与其他代码无关,建议在函数实现前,先对传入的指针和数组大小进行验证,以防出现非法内存访问或数组越界等错误。