用c++编写一个普通的排序函数 void sort(int *ptr, int n),实现对二维数组从小到大的排序。其中ptr指向数组的首地址,n为数组的元素个数。
时间: 2024-05-13 21:15:24 浏览: 12
好的,这是一个简单的冒泡排序函数的实现,可以对二维数组按从小到大的顺序排序。可以将数组看做一维数组,按照一维数组的方式进行排序。
```c
void sort(int *ptr, int n) {
int i, j, tmp;
for(i = 0; i < n - 1; i++) {
for(j = 0; j < n - 1 - i; j++) {
if(*(ptr + j) > *(ptr + j + 1)) {
tmp = *(ptr + j);
*(ptr + j) = *(ptr + j + 1);
*(ptr + j + 1) = tmp;
}
}
}
}
```
其中,`ptr`指向数组的首地址,`n`为数组的元素个数,`i`和`j`为循环变量,`tmp`为交换时使用的临时变量。在循环中,比较相邻两个元素的大小,如果前者大于后者,则交换位置。最终完成排序。
相关问题
编写一个c++程序,要求是用指针的方法实现对二维数组的排序
好的,我可以为您提供一个简单的示例程序:
```c++
#include <iostream>
using namespace std;
void sort(int *arr[], int rows, int cols) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
for (int k = j + 1; k < cols; k++) {
if (*(*(arr + i) + j) > *(*(arr + i) + k)) {
int temp = *(*(arr + i) + j);
*(*(arr + i) + j) = *(*(arr + i) + k);
*(*(arr + i) + k) = temp;
}
}
}
}
}
int main() {
int arr[3][4] = {{2, 4, 1, 3}, {6, 8, 5, 7}, {10, 12, 9, 11}};
int *ptr[3];
for (int i = 0; i < 3; i++) {
ptr[i] = arr[i];
}
sort(ptr, 3, 4);
cout << "Sorted Array:" << endl;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
cout << *(*(ptr + i) + j) << " ";
}
cout << endl;
}
return 0;
}
```
在这个程序中,我们首先定义了一个二维数组 `arr`,然后定义了一个指针数组 `ptr`,并将 `ptr` 中的每个元素都指向 `arr` 中的每一行。接着,我们调用 `sort` 函数,使用冒泡排序的方法对每一行进行排序。最后,我们输出排序后的二维数组。
需要注意的是,在这个程序中,我们使用了指针的指针来访问二维数组中的元素。这是因为二维数组在内存中是按行存储的,而我们需要对每一行进行排序,所以需要使用指向指针的指针来实现对每一行的访问。
编写一个函数sort, 使用指针的方法对一个数组a[10],实现从大到小的排序
好的,下面是代码示例:
```c++
#include <iostream>
using namespace std;
void sort(int* ptr, int len) {
for (int i = 0; i < len - 1; i++) {
for (int j = i + 1; j < len; j++) {
if (*(ptr + i) < *(ptr + j)) { // 指针指向的元素两两比较
int temp = *(ptr + i);
*(ptr + i) = *(ptr + j);
*(ptr + j) = temp;
}
}
}
}
int main() {
int arr[10] = {9, 3, 7, 4, 2, 8, 5, 1, 6, 0};
int len = 10;
int* ptr = arr;
sort(ptr, len);
for (int i = 0; i < len; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
输出结果为:
```
9 8 7 6 5 4 3 2 1 0
```
解释一下,我们首先定义了一个长度为 10 的整型数组 arr,并初始化为 0 到 9 的连续整数。然后定义了一个指针变量 ptr,指向数组的第一个元素。
接着调用 sort 函数,将指针变量和数组长度作为参数传入,函数中使用指针的方式对数组进行从大到小的排序。
最后在主函数中输出已经排序后的数组元素,可以看到它们已经按照从大到小的顺序排列好了。