c语言编写函数用选择法排序,对12个浮点数,这12个浮点数放在数组,从大到小排序
时间: 2024-03-26 20:35:33 浏览: 18
下面是针对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语言代码,对12个浮点数从大到小进行排序:
```c
#include <stdio.h>
// 冒泡排序
void bubbleSort(float arr[], int len) {
int i, j;
float temp;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - 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 len) {
int i, j, maxIndex;
float temp;
for (i = 0; i < len - 1; i++) {
maxIndex = i;
for (j = i + 1; j < len; j++) {
if (arr[j] > arr[maxIndex]) {
maxIndex = j;
}
}
if (maxIndex != i) {
temp = arr[i];
arr[i] = arr[maxIndex];
arr[maxIndex] = temp;
}
}
}
int main() {
float arr[] = {3.2, 4.5, 1.6, 2.8, 5.9, 6.1, 0.3, 7.2, 2.4, 8.9, 4.3, 9.8};
int len = sizeof(arr) / sizeof(float);
int i;
printf("排序前:");
for (i = 0; i < len; i++) {
printf("%.1f ", arr[i]);
}
printf("\n");
bubbleSort(arr, len); // 冒泡排序
// selectionSort(arr, len); // 选择排序
printf("排序后:");
for (i = 0; i < len; i++) {
printf("%.1f ", arr[i]);
}
printf("\n");
return 0;
}
```
在上面的代码中,我们定义了 `bubbleSort()` 和 `selectionSort()` 两个函数来实现冒泡排序和选择排序,然后在 `main()` 函数中调用这两个函数来对数组进行排序。最后输出排序前和排序后的数组元素。
需要注意的是,由于题目要求从大到小排序,所以排序函数中的比较符号 `<` 和 `>` 需要颠倒一下。在上面的代码中,我注释掉了选择排序的函数调用,如果需要使用选择排序,只需要将 `bubbleSort()` 函数注释掉,然后将下面的注释取消即可:`// selectionSort(arr, len); // 选择排序`。
c语言编写函数分别用冒泡法和选择法排序,对12个浮点数,这12个浮点数放在数组。从大到小
好的,下面是使用冒泡排序和选择排序对12个浮点数进行从大到小排序的C语言代码示例:
```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 - 1 - i; 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, maxIndex;
float temp;
for (i = 0; i < n - 1; i++) {
maxIndex = i;
for (j = i + 1; j < n; j++) {
if (arr[j] > arr[maxIndex]) {
maxIndex = j;
}
}
if (maxIndex != i) {
temp = arr[i];
arr[i] = arr[maxIndex];
arr[maxIndex] = temp;
}
}
}
int main() {
float arr[12] = {5.8, 3.2, 9.7, 2.4, 7.5, 1.0, 6.3, 4.1, 8.6, 0.9, 2.5, 3.7};
int n = sizeof(arr) / sizeof(arr[0]);
int i;
// 使用冒泡排序对数组排序
bubbleSort(arr, n);
printf("使用冒泡排序排序后的数组:\n");
for (i = 0; i < n; i++) {
printf("%.1f ", arr[i]);
}
printf("\n");
// 使用选择排序对数组排序
selectionSort(arr, n);
printf("使用选择排序排序后的数组:\n");
for (i = 0; i < n; i++) {
printf("%.1f ", arr[i]);
}
printf("\n");
return 0;
}
```
输出结果为:
```
使用冒泡排序排序后的数组:
9.7 8.6 7.5 6.3 5.8 4.1 3.7 3.2 2.5 2.4 1.0 0.9
使用选择排序排序后的数组:
9.7 8.6 7.5 6.3 5.8 4.1 3.7 3.2 2.5 2.4 1.0 0.9
```