2.若有数组arr[10] = {36,1,26,40,32,23,98,77,2,25},写一个bubbleSort函数,通过一个指针数组aptr[10]对arr进行排序。要求不能改变arr数组顺序,最后把arr和aptr的所有元素输出并对比(指针数组)c语言
时间: 2024-05-11 10:18:08 浏览: 120
以下是 bubbleSort 函数的实现:
```c
void bubbleSort(int *arr, int **aptr, int n) {
// 初始化指针数组
for (int i = 0; i < n; i++) {
aptr[i] = &arr[i];
}
// 冒泡排序
for (int i = 0; i < n - 1; i++) {
for (int 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;
}
}
}
}
```
在主函数中,我们可以这样调用 bubbleSort 函数:
```c
int main() {
int arr[10] = {36,1,26,40,32,23,98,77,2,25};
int *aptr[10];
bubbleSort(arr, aptr, 10);
// 输出 arr 数组
printf("arr: ");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 输出 aptr 数组
printf("aptr: ");
for (int i = 0; i < 10; i++) {
printf("%d ", *aptr[i]);
}
printf("\n");
return 0;
}
```
输出结果如下:
```
arr: 36 1 26 40 32 23 98 77 2 25
aptr: 1 2 23 25 26 32 36 40 77 98
```
可以看到,arr 数组的顺序没有改变,而 aptr 数组中的元素已经按照从小到大的顺序排列。
阅读全文