c语言利用指针数组编写函数bubble(int *a[],int n),实现对n个数从小到大排序。
时间: 2024-02-24 09:59:25 浏览: 143
下面是利用指针数组编写的bubble函数的实现,可以对n个数从小到大排序:
```c
void bubble(int *a[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (*a[j] > *a[j + 1]) {
temp = *a[j];
*a[j] = *a[j + 1];
*a[j + 1] = temp;
}
}
}
}
```
在这个函数中,我们利用指针数组a来表示这n个数,每一个元素都是一个指向int类型变量的指针。使用两个嵌套的for循环,依次比较相邻两个元素的大小,如果前面的大于后面的,则交换它们的值。最终,经过n-1轮比较和交换,数组a中的元素就会按照从小到大的顺序排列。
相关问题
本题将5个字符串从小到大排序后输出(用指针数组实现)。 函数接口定义: void fsort(char *color[ ], int n);
题目描述的是在一个函数`fsort`中,使用指针数组对五个字符串按照字典序从小到大进行排序。这里的关键点在于指针数组,它实际上是一个指向字符数组的数组,每个元素都是一个字符串的首地址。以下是使用C语言的一个简单示例,我们将采用冒泡排序算法来完成这个任务:
```c
#include <stdio.h>
#include <string.h>
// 定义字符串长度的最大值
#define MAX_LEN 10
// 比较两个字符串并交换它们在数组中的位置
void swap(char** a, char** b) {
char temp[MAX_LEN + 1];
strcpy(temp, *a);
strcpy(*b, *a);
strcpy(*a, temp);
}
// 冒泡排序
void bubble_sort(char* color[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (strcmp(color[j], color[j + 1]) > 0) {
// 使用指针操作交换字符串
swap(&color[j], &color[j + 1]);
}
}
}
}
// 函数接口
void fsort(char *color[], int n) {
bubble_sort(color, n);
}
int main() {
char color[] = {"red", "blue", "yellow", "green", "orange"};
int n = sizeof(color) / sizeof(color[0]);
printf("Before sorting:\n");
for (int i = 0; i < n; i++) {
printf("%s ", color[i]);
}
printf("\n");
fsort(color, n);
printf("After sorting (in ascending order):\n");
for (int i = 0; i < n; i++) {
printf("%s ", color[i]);
}
return 0;
}
```
当你运行这个程序,你会看到原始字符串列表按字母顺序排列的结果。注意,这里的例子假设输入字符串不会超过`MAX_LEN`个字符,并且已包含结束符`\0`。
利用指针作为函数的形参,实现将10个整数从小到大排列输出
在C语言中,如果你想通过指针作为函数的形参来排序数组,通常我们会选择冒泡排序、快速排序或其他已有的排序算法。这里以冒泡排序为例,展示如何实现:
```c
#include <stdio.h>
// 定义交换两个元素的函数,利用指针间接修改数组
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 冒泡排序函数,传入指向数组的指针和数组长度
void bubble_sort(int* arr, int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap(&arr[j], &arr[j + 1]);
}
}
}
}
int main() {
int numbers[10] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}; // 待排序的数组
int length = sizeof(numbers) / sizeof(numbers[0]);
bubble_sort(numbers, length);
printf("排序后的数组:");
for (int i = 0; i < length; i++) {
printf("%d ", numbers[i]);
}
printf("\n");
return 0;
}
```
在这个例子中,`bubble_sort`函数接收一个整数数组的地址和数组大小,然后内部通过指针操作对数组进行升序排列。
阅读全文