c语言2.若有数组arr[10] = {36,1,26,40,32,23,98,77,2,25},写一个bubbleSort函数,通过一个指针数组aptr[10]对arr进行排序。要求不能改变arr数组顺序,最后把arr和aptr的所有元素输出并对比(指针数组)
时间: 2023-10-16 12:08:26 浏览: 59
可以使用指针数组来实现冒泡排序,具体实现如下:
```c
#include <stdio.h>
void bubbleSort(int *arr, int **aptr, int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (*(aptr[j]) > *(aptr[j + 1])) {
int *temp = aptr[j];
aptr[j] = aptr[j + 1];
aptr[j + 1] = temp;
}
}
}
}
int main() {
int arr[10] = {36, 1, 26, 40, 32, 23, 98, 77, 2, 25};
int *aptr[10];
int i;
for (i = 0; i < 10; i++) {
aptr[i] = &arr[i];
}
bubbleSort(arr, aptr, 10);
printf("排序后的arr数组为:\n");
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n排序后的aptr数组为:\n");
for (i = 0; i < 10; i++) {
printf("%d ", *(aptr[i]));
}
return 0;
}
```
其中 `bubbleSort` 函数使用指针数组 `aptr` 来对原始数组 `arr` 进行排序,排序后的结果存储在 `aptr` 数组中,最后输出对比两个数组的元素即可。
阅读全文