#include <stdio.h>

// 选择排序函数,返回极值的下标 int select(int arr[], int n, int type) { int i, j, ext, index; // 初始化index为0 index = 0; for (i = 0; i < n - 1; i++) { // 初始化ext为第i个元素 ext = arr[i]; // 从i+1开始找到极值的下标 for (j = i + 1; j < n; j++) { if (type == 1 && arr[j] < ext) { // 最小值 ext = arr[j]; index = j; } else if (type == 2 && arr[j] > ext) { // 最大值 ext = arr[j]; index = j; } } // 将极值与末尾的元素交换 arr[index] = arr[i]; arr[i] = ext; // 输出排序过程 for (j = 0; j < n; j++) { printf('%d ', arr[j]); } printf(' '); } return index; }

int main() { int arr[20], n, i, type; printf('请输入元素个数n(n<=20)和极值类型(1一最小值/2一最大值): '); scanf('%d%d', &n, &type); printf('请输入%d个整数: ', n); for (i = 0; i < n; i++) { scanf('%d', &arr[i]); } printf('排序过程如下: '); select(arr, n, type); printf('排序结果如下: '); for (i = 0; i < n; i++) { printf('%d ', arr[i]); } printf(' '); return 0; }

C语言选择排序算法实现:寻找数组极值并排序

原文地址: https://www.cveoy.top/t/topic/nWqe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录