用选择法将数组排成降序的函数----array1;c语言
时间: 2023-10-06 17:14:05 浏览: 106
下面是一个使用选择排序算法将数组按降序排列的C语言函数array1:
```c
void array1(int arr[], int size) {
int i, j, max_idx, temp;
for (i = 0; i < size - 1; i++) {
max_idx = i;
for (j = i + 1; j < size; j++) {
if (arr[j] > arr[max_idx])
max_idx = j;
}
temp = arr[i];
arr[i] = arr[max_idx];
arr[max_idx] = temp;
}
}
```
该函数接收一个整数数组和数组大小作为参数。它使用选择排序算法,即在每次迭代中找到数组中最大的元素,并将其与当前位置的元素进行交换。在最终迭代之后,该数组将按降序排列。
相关问题
用选择法将数组排成降序的函数。c语言
下面是用选择排序法将数组排成降序的C语言代码:
```c
void selectionSort(int arr[], int n) {
int i, j, max_idx;
for (i = 0; i < n - 1; i++) {
max_idx = i;
for (j = i + 1; j < n; j++) {
if (arr[j] > arr[max_idx]) {
max_idx = j;
}
}
if (max_idx != i) {
int temp = arr[i];
arr[i] = arr[max_idx];
arr[max_idx] = temp;
}
}
}
```
这个函数使用了两层循环,外层循环从数组的第一个元素开始遍历到倒数第二个元素,内层循环从外层循环的下一个元素开始遍历到最后一个元素,找到当前未排序部分的最大值的索引,然后将该最大值与未排序部分的第一个元素交换位置。这样每次内层循环结束,未排序部分的最大值就被放到了已排序部分的最前面,最终得到的就是一个降序排列的数组。
用C语言将冒泡排序的代码封装成函数 my_sort 并根据执行程序时 命令行的参数 来确定升序还是降序 ./a.out -升序 ---》 升序排序 ./a.out -降序 ---》 降序排序
在C语言中,我们可以创建一个名为`my_sort`的函数,用于实现冒泡排序,并通过命令行参数动态判断排序顺序。下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义冒泡排序函数,接受数组、大小和是否降序的标志
void bubble_sort(int arr[], int size, int is_descending) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - 1 - i; j++) {
if (!is_descending) { // 升序模式
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
} else { // 降序模式
if (arr[j] < arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}
int main(int argc, char *argv[]) {
if (argc != 4 || strcmp(argv[1], "-sort") != 0) { // 检查命令行参数
printf("Usage: ./a.out -sort [asc|desc] array_size elements\n");
return 1;
}
int sort_direction = strcmp(argv[2], "desc"); // 判断排序方向
int size = atoi(argv[3]); // 转换数组大小为整数
int *arr = malloc(size * sizeof(int)); // 动态分配内存
if (arr == NULL) {
perror("Memory allocation failed");
exit(1);
}
// 从命令行读取元素并将它们放入数组
for (int i = 0; i < size; i++) {
scanf("%d", &arr[i]);
}
bubble_sort(arr, size, sort_direction == 0); // 调用排序函数
// ... (添加代码来打印排序后的数组)
free(arr); // 释放内存
return 0;
}
```
在这个示例中,用户需要提供四个命令行参数:`-sort`,排序方向("asc"表示升序,"desc"表示降序),数组大小以及元素值。如果提供的参数不满足要求,程序会给出错误提示。
运行例子:
```
./a.out -sort asc 5 3 1 4 2
// 或者
./a.out -sort desc 5 3 1 4 2
```
阅读全文