c语言编写函数用选择法排序,对12个浮点数,这12个浮点数放在数组,从大到小排序
时间: 2024-03-26 21:35:33 浏览: 113
下面是针对12个浮点数进行从大到小排序的C语言函数示例:
```c
void selection_sort(float arr[], int n)
{
int i, j, max_index;
float temp;
for (i = 0; i < n-1; i++)
{
max_index = i;
for (j = i+1; j < n; j++)
{
if (arr[j] > arr[max_index])
{
max_index = j;
}
}
// 交换找到的最大值元素和当前正在排序的元素
temp = arr[max_index];
arr[max_index] = arr[i];
arr[i] = temp;
}
}
```
该函数接收一个浮点数数组和数组长度作为参数,使用选择法排序算法对数组进行排序。在排序过程中,每次找到未排序部分的最大值,并将其和当前正在排序的元素交换位置。这里需要注意的一点是,因为浮点数不是整数,所以在比较大小时需要使用 `<` 和 `>` 运算符,而不是 `<=` 和 `>=` 运算符。
相关问题
c语言编写函数分别用冒泡法和选择法排序,对12个浮点数,这12个浮点数放在数组。从大到小
好的,我会根据你的要求进行回答。下面是两个函数,一个是冒泡排序,一个是选择排序,都是用来对浮点数组从大到小进行排序的:
```c
#include <stdio.h>
void bubbleSort(float arr[], int n) {
int i, j;
float temp;
for (i = 0; i < n-1; i++) {
for (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;
}
}
}
}
void selectionSort(float arr[], int n) {
int i, j, max_idx;
float temp;
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;
}
}
temp = arr[i];
arr[i] = arr[max_idx];
arr[max_idx] = temp;
}
}
```
这两个函数都接受一个浮点数组和数组的大小作为参数,然后会对数组进行排序。`bubbleSort` 函数使用了冒泡排序算法,每次比较相邻的两个数,如果前面的数比后面的数小,就交换它们的位置。`selectionSort` 函数使用了选择排序算法,每次找到未排序部分中最大的数,然后将它与未排序部分的第一个数交换位置。
如果你想要对一个包含 12 个浮点数的数组进行排序,可以这样调用这两个函数:
```c
int main() {
float arr[] = {3.5, 2.1, 5.7, 1.2, 4.6, 8.9, 2.3, 9.1, 0.5, 7.8, 6.4, 4.3};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
// 或者使用 selectionSort(arr, n);
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%.1f ", arr[i]);
}
printf("\n");
return 0;
}
```
这段代码会输出排序后的数组,从大到小排列。
C语言编写函数分别用冒泡法和选择法排序,对12个浮点数,这12个浮点数放在数组。从大到小
好的,我来回答你的问题。
以下是用冒泡法排序的C语言代码:
```c
void bubble_sort(float arr[], int n) {
int i, j;
float temp;
for (i = 0; i < n - 1; i++) {
for (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;
}
}
}
}
```
以下是用选择法排序的C语言代码:
```c
void selection_sort(float arr[], int n) {
int i, j, max_index;
float temp;
for (i = 0; i < n - 1; i++) {
max_index = i;
for (j = i + 1; j < n; j++) {
if (arr[j] > arr[max_index]) {
max_index = j;
}
}
temp = arr[i];
arr[i] = arr[max_index];
arr[max_index] = temp;
}
}
```
这两个函数都接受一个浮点数类型的数组和数组长度作为参数,可以用于对数组进行排序。
如果你想从大到小排序,可以先使用其中任意一个排序函数对数组排序,然后逆序输出数组即可。
阅读全文