c语言冒泡排序自定义函数
时间: 2023-12-20 07:32:23 浏览: 55
```c
// 自定义冒泡排序函数
void bubble_sort(int arr[], int sz) {
for (int i = 0; i < sz - 1; i++) {
for (int j = 0; j < sz - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[] = { 9, 8, 7, 4, 5, 6, 1, 2, 3, 0 };
int sz = sizeof(arr) / sizeof(arr[0]); // 计算数组元素个数
bubble_sort(arr, sz); // 调用自定义冒泡排序函数
for (int i = 0; i < sz; i++) {
printf("%d ", arr[i]); // 打印数组,检验排序结果
}
return 0;
}
```
相关问题
c语言指针自定义函数排序
以下是一个使用指针的自定义函数对C语言中的整型数组进行排序的例子:
```c
#include <stdio.h>
void sort(int *arr, int n) {
int i, j, temp;
for (i = 0; i < n - 1 i++) {
for (j = i + 1; j < n; j++) {
if (*(arr + i) > *(arr + j)) {
temp = *(arr + i);
*(arr + i) = *(arr + j);
*(arr + j) = temp;
}
}
}
}
int main() {
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int n = sizeof(arr) / sizeof(int);
int i;
printf("Before sorting: ");
for (i = 0; i < n; i++) {
printf("%d ", *(arr + i));
}
sort(arr, n);
printf("\nAfter sorting: ");
for (i = 0; i < n; i++) {
printf("%d ", *(arr + i));
}
return 0;
}
```
该程序首先定义了一个名为sort的自定义函数,该函数接受一个整型指针arr和一个整型n作为参数,其中arr指向需要排序的整型数组,n表示数组的长度。sort函数使用冒泡排序算法对数组进行排序,最后将排序后的数组输出。
在主函数中,我们定义了一个整型数组arr,并使用sizeof运算符计算出数组的长度n。然后,我们输出排序前的数组,调用sort函数对数组进行排序,最后输出排序后的数组。
用c语言写一个查找数组中的中位数,要求使用2个自定义函数 1)自定义函数sort实现数组排序 2)自定义函数medi查找并输出当前数组中位数
好的,以下是代码实现:
```c
#include <stdio.h>
void sort(int arr[], int n); // 自定义函数sort实现数组排序
float medi(int arr[], int n); // 自定义函数medi查找并输出当前数组中位数
int main() {
int n;
printf("请输入数组长度:");
scanf("%d", &n);
int arr[n];
printf("请输入数组元素:");
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
sort(arr, n);
printf("排序后的数组为:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
float median = medi(arr, n);
printf("中位数为:%.2f\n", median);
return 0;
}
void sort(int arr[], int n) {
int temp;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
float medi(int arr[], int n) {
float median;
if (n % 2 == 0) {
median = (float)(arr[n / 2 - 1] + arr[n / 2]) / 2.0;
} else {
median = (float)arr[n / 2];
}
return median;
}
```
解释一下代码的实现过程:
1. 首先在主函数中获取数组长度和数组元素;
2. 调用自定义函数 `sort` 进行数组排序;
3. 输出排序后的数组;
4. 调用自定义函数 `medi` 查找并输出当前数组中位数。
其中,自定义函数 `sort` 使用冒泡排序算法对数组进行排序,自定义函数 `medi` 则根据数组元素个数的奇偶性进行不同的中位数计算,并将计算结果返回给主函数。
注意,为了保证精度,中位数的数据类型为 `float`。