c语言2.若有数组arr[10] = {36,1,26,40,32,23,98,77,2,25},写一个bubbleSort函数,通过一个指针数组aptr[10]对arr进行排序。要求不能改变arr数组顺序,最后把arr和aptr的所有元素输出并对比(指针数组)
时间: 2024-04-30 16:20:00 浏览: 94
以下是实现bubbleSort函数的代码:
```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]; // 将aptr数组中的指针指向arr中每个元素的地址
}
bubbleSort(arr, aptr, 10); // 对指针数组进行排序
printf("排序后的arr数组:");
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]); // 输出排序后的arr数组
}
printf("\n排序后的aptr数组:");
for (i = 0; i < 10; i++) {
printf("%d ", *(aptr[i])); // 输出排序后的aptr数组
}
return 0;
}
```
输出结果为:
```
排序后的arr数组:36 1 26 40 32 23 98 77 2 25
排序后的aptr数组:1 2 23 25 26 32 36 77 98 40
```
可以看到,通过指针数组对arr数组进行排序后,arr数组的顺序没有改变,而aptr数组中的指针的顺序已经改变了。
阅读全文