用c++编写一个普通的排序函数 void sort(int *ptr, int n),实现对二维数组从小到大的排序。其中ptr指向数组的首地址,n为数组的元素个数。
时间: 2024-05-13 17:15:24 浏览: 101
好的,这是一个简单的冒泡排序函数的实现,可以对二维数组按从小到大的顺序排序。可以将数组看做一维数组,按照一维数组的方式进行排序。
```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`为交换时使用的临时变量。在循环中,比较相邻两个元素的大小,如果前者大于后者,则交换位置。最终完成排序。
相关问题
要求设计一个返回指针值的函数int *search(int *a, int n),实现从一维数组中找出最小值,主函数中调用函数search( ),输出最小值。
以下是可能的实现:
```c++
#include <iostream>
using namespace std;
int *search(int *a, int n) {
if (n <= 0) return nullptr; // 边界情况,数组为空
int *min_ptr = &a[0]; // 指向数组第一个元素的指针
for (int i = 1; i < n; i++) {
if (a[i] < *min_ptr) {
min_ptr = &a[i]; // 更新最小值的指针
}
}
return min_ptr; // 返回指向最小值的指针
}
int main() {
int arr[] = {10, 5, 8, 3, 6};
int *min_ptr = search(arr, 5);
if (min_ptr != nullptr) {
cout << "The minimum value is: " << *min_ptr << endl;
} else {
cout << "The array is empty!" << endl;
}
return 0;
}
```
函数`search()`返回指向最小值的指针,主函数中通过解引用该指针得到最小值。注意,如果数组为空,`search()`返回`nullptr`,需要在主函数中处理这种情况。
c语言编写本题要求实现一个函数,实现学生英文名按照其在字典中的顺序进行排序,假设学生不超过20个。要求如下:用指针数组作函数参数,实现字符串的按字典顺序排列。 函数接口定义: void SortString ( char *ptr[], int n ); 其中 ptr[] 为字符指针数组, n 为学生数量。
下面是一个可能的C语言实现,实现了按字典顺序排序学生英文名的功能:
```c
#include <stdio.h>
#include <string.h>
void SortString(char *ptr[], int n) {
char *temp;
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (strcmp(ptr[i], ptr[j]) > 0) {
temp = ptr[i];
ptr[i] = ptr[j];
ptr[j] = temp;
}
}
}
}
int main() {
char *names[] = {"Tom", "Bob", "Alice", "David", "Frank", "Charlie", "Eve", "George", "Harry", "Ivy"};
int n = 10;
SortString(names, n);
int i;
for (i = 0; i < n; i++) {
printf("%s\n", names[i]);
}
return 0;
}
```
在这个实现中,我们先定义了一个指针数组 `names` 来存储学生英文名,以及学生数量 `n`。然后调用 `SortString` 函数来对 `names` 中的字符串进行排序。排序过程中,我们使用了 `strcmp` 函数来比较两个字符串的大小,并且交换两个指针的位置,以实现排序。最后我们使用一个 for 循环来遍历排序后的数组,将每个学生名字打印出来。
阅读全文