c语言将选择排序法和冒泡排序法做成函数,分别对数组中的10个整数按由小到大和从大到小排序
时间: 2024-02-13 16:03:30 浏览: 97
好的,我可以帮您实现这两个排序函数。
首先是选择排序法,它的基本思想是每次在未排序的部分中选取最小的数,放到已排序的部分的末尾。具体实现如下:
```c
void selection_sort(int arr[], int n, int flag) {
int i, j, min_idx, max_idx;
for (i = 0; i < n-1; i++) {
min_idx = i;
max_idx = i;
for (j = i+1; j < n; j++) {
if (flag == 1) { // 从小到大排序
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
} else if (flag == -1) { // 从大到小排序
if (arr[j] > arr[max_idx]) {
max_idx = j;
}
}
}
if (flag == 1) { // 从小到大排序
if (min_idx != i) {
int temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
} else if (flag == -1) { // 从大到小排序
if (max_idx != i) {
int temp = arr[max_idx];
arr[max_idx] = arr[i];
arr[i] = temp;
}
}
}
}
```
接下来是冒泡排序法,它的基本思想是从头到尾依次比较相邻的两个数,如果前面的数比后面的大,就交换这两个数。具体实现如下:
```c
void bubble_sort(int arr[], int n, int flag) {
int i, j;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (flag == 1) { // 从小到大排序
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
} else if (flag == -1) { // 从大到小排序
if (arr[j] < arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
}
```
您可以将这两个函数放到您的代码中,按照需要传入数组、数组长度以及排序方式(1代表从小到大,-1代表从大到小),然后调用即可。
阅读全文