利用指针实现冒泡法排序
时间: 2023-11-02 16:19:23 浏览: 65
好的,下面是实现冒泡法排序的代码:
```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 - i - 1; j++) {
if (*(arr + j) > *(arr + j + 1)) {
temp = *(arr + j);
*(arr + j) = *(arr + j + 1);
*(arr + j + 1) = temp;
}
}
}
}
int main() {
int arr[] = {3, 5, 1, 9, 6, 8};
int n = sizeof(arr) / sizeof(arr[0]);
int i;
printf("Before sorting: ");
for (i = 0; i < n; i++) {
printf("%d ", *(arr + i));
}
bubble_sort(arr, n);
printf("\nAfter sorting: ");
for (i = 0; i < n; i++) {
printf("%d ", *(arr + i));
}
return 0;
}
```
在这段代码中,`bubble_sort` 函数实现了冒泡排序算法,它接收一个整型数组的指针和数组的长度作为参数。在函数内部,我们使用两层嵌套循环遍历数组,对相邻的元素进行比较,如果前一个元素大于后一个元素,就交换它们的位置。通过指针的方式访问数组元素,可以避免数组名在传递参数时被隐式转换为指向第一个元素的指针的问题。在 `main` 函数中,我们定义了一个整型数组,调用 `bubble_sort` 函数对数组进行排序,并打印出排序前后的数组元素。
阅读全文