c语言中使用选择排序方法,实现将数组int arr[15] = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};中的数分别按照从小到大、从大到小的顺序排列并输出。
时间: 2023-08-19 22:34:05 浏览: 89
好的,我来为您解答这个问题。
C语言中的选择排序算法,是通过不断地选择最小(或最大)的元素,将其放到数组的最前面(或最后面),最终实现排序的目的。
下面是使用选择排序算法,对数组int arr[15] = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};进行从小到大排序的代码:
```c
#include <stdio.h>
void selection_sort_ascend(int arr[], int n) {
int i, j, min_index, temp;
for (i = 0; i < n - 1; i++) {
min_index = i;
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[min_index]) {
min_index = j;
}
}
if (min_index != i) {
temp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = temp;
}
}
}
int main() {
int arr[15] = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
int n = sizeof(arr) / sizeof(arr[0]);
selection_sort_ascend(arr, n);
printf("从小到大排序后的数组:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
运行结果为:
```
从小到大排序后的数组:
2 3 4 5 15 19 26 27 36 38 44 46 47 48 50
```
同样的,如果要实现从大到小的排序,只需要将选择最小值的逻辑改为选择最大值即可。下面是代码:
```c
#include <stdio.h>
void selection_sort_descend(int arr[], int n) {
int i, j, max_index, 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;
}
}
if (max_index != i) {
temp = arr[i];
arr[i] = arr[max_index];
arr[max_index] = temp;
}
}
}
int main() {
int arr[15] = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
int n = sizeof(arr) / sizeof(arr[0]);
selection_sort_descend(arr, n);
printf("从大到小排序后的数组:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
运行结果为:
```
从大到小排序后的数组:
50 48 47 46 44 38 36 27 26 19 15 5 4 3 2
```
希望能够帮到您!