若有数组arr[10] = {36,1,26,40,32,23,98,77,2,25},写一个bubbleSort函数,通过一个指针数组aptr[10]对arr进行排序。要求不能改变arr数组顺序,最后把arr和aptr的所有元素输出并对比
时间: 2024-05-11 17:20:02 浏览: 16
以下是bubbleSort函数的实现:
```c++
void bubbleSort(int *arr, int **aptr, int n) {
for(int i = 0; i < n - 1; i++) {
for(int j = 0; j < n - i - 1; j++) {
if(*(aptr[j]) > *(aptr[j+1])) {
// 指针数组aptr中元素的值为arr中元素的地址
// 因此交换指针数组中元素的值,即可交换arr中对应元素的值
int *temp = aptr[j];
aptr[j] = aptr[j+1];
aptr[j+1] = temp;
}
}
}
}
```
使用指针数组aptr对arr进行排序的原理是,将aptr中的元素指向arr中的元素,然后对aptr进行排序,这样就不会改变arr数组的顺序。最后输出arr和aptr的所有元素并对比,代码如下:
```c++
int main() {
int arr[10] = {36,1,26,40,32,23,98,77,2,25};
int *aptr[10];
for(int i = 0; i < 10; i++) {
aptr[i] = &arr[i]; // 将aptr中的元素指向arr中的元素
}
bubbleSort(arr, aptr, 10); // 使用指针数组aptr对arr进行排序
cout << "arr: ";
for(int i = 0; i < 10; i++) {
cout << arr[i] << " ";
}
cout << endl;
cout << "aptr: ";
for(int i = 0; i < 10; i++) {
cout << *(aptr[i]) << " "; // 输出aptr中元素指向的arr中的元素
}
cout << endl;
return 0;
}
```
输出结果为:
```
arr: 36 1 26 40 32 23 98 77 2 25
aptr: 1 2 23 25 26 32 36 40 77 98
```
阅读全文