用选择法对10个整数由大到小排序。要求画出流程图
选择排序的过程如下:
从待排序的n个元素中找到最大的元素,将其与第n个元素交换位置。
在剩余的n-1个元素中,再找到最大的元素,将其与第n-1个元素交换位置。
重复上述步骤,直到只剩下一个元素为止。
其中,每经过一轮,就能确定出一个元素的位置。通过n-1轮选择,就能将这n个元素按照从大到小的顺序排好序。选择排序的时间复杂度为O(n^2)。
下面是使用C语言实现选择排序算法的示例代码:
#include <stdio.h>
void selection_sort(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;
}
}
// 将找到的最大元素与当前位置交换
int temp = arr[i];
arr[i] = arr[max_idx];
arr[max_idx] = temp;
}
}
int main()
{
int i, n;
int arr[10] = {23, 4, 56, 77, 12, 45, 89, 34, 67, 90};
n = sizeof(arr) / sizeof(arr[0]);
// 输出排序前的列表
printf("排序前:\n");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 调用选择排序函数
selection_sort(arr, n);
// 输出排序后的列表
printf("排序后:\n");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
选排序流程图: