2.若有数组arr[10] = {36,1,26,40,32,23,98,77,2,25},用c写一个bubbleSort函数,通过一个指针数组aptr[10]对arr进行排序。要求不能改变arr数组顺序,最后把arr和aptr的所有元素输出并对比(指针数组)
时间: 2023-10-20 09:05:55 浏览: 91
以下是代码实现:
```c
#include <stdio.h>
void bubbleSort(int *arr, int *aptr[], int len) {
int i, j, temp;
int *tempPtr;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - i - 1; j++) {
if (*(arr + j) > *(arr + j + 1)) {
// 交换数组元素
temp = *(arr + j);
*(arr + j) = *(arr + j + 1);
*(arr + j + 1) = temp;
// 交换指针数组元素
tempPtr = *(aptr + j);
*(aptr + j) = *(aptr + j + 1);
*(aptr + j + 1) = tempPtr;
}
}
}
}
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);
// 输出排序后的arr数组
for (i = 0; i < 10; i++) {
printf("%d ", *(arr + i));
}
printf("\n");
// 输出排序后的aptr指针数组
for (i = 0; i < 10; i++) {
printf("%d ", **(aptr + i));
}
return 0;
}
```
代码中,我们使用了指针数组来记录每个元素的地址,然后在排序时交换指针数组中的元素,以保证不改变原数组 arr 的顺序。最后比较输出 arr 和 aptr 的结果,可以发现它们的元素顺序是一致的。
阅读全文