下面是C语言程序的文字讲解,该程序实现了输入数组元素、对其进行选择排序并输出排序后的数组。
#include <stdio.h>
void selectionSort(int arr[], int n) {
int i, j, min_idx, temp;
// 一次移动未排序部分的边界
for (i = 0; i < n-1; i++) {
// 找到未排序部分的最小元素的索引
min_idx = i;
for (j = i+1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
// 将找到的最小元素与未排序部分的第一个元素交换
temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
void printArray(int arr[], int size) {
int i;
for (i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int n, i;
// 获取用户输入的数组大小
printf("Enter number of elements in the array:\n");
scanf("%d", &n);
// 创建数组
int arr[n];
// 获取用户输入的数组元素
printf("Enter %d integers:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 对数组进行排序
selectionSort(arr, n);
// 输出排序后的数组
printf("Sorted array: \n");
printArray(arr, n);
return 0;
}
1. 程序开始:首先包含标准输入输出头文件 stdio.h。
2. 定义选择排序函数:selectionSort 函数接收一个整型数组 arr 和数组的大小 n 作为参数。该函数负责对数组进行选择排序。
3. 选择排序算法:
外层循环:变量 i 从数组的第一个元素开始,到倒数第二个元素结束。这个循环负责逐步减少未排序部分的大小。
内层循环:变量 j 从 i+1 开始,到数组的最后一个元素结束。这个循环负责在未排序的部分中找到最小元素的索引 min_idx。
交换操作:如果在内层循环中找到了一个比当前 min_idx 更小的元素,则更新 min_idx。外层循环结束后,交换当前 i 位置的元素与 min_idx 位置的元素。
4. 定义打印数组函数:printArray 函数接收一个整型数组 arr 和数组的大小 size 作为参数。该函数负责打印数组中的所有元素。
5. 主函数:main 函数是程序的入口点。
获取数组大小:使用 printf 打印提示信息,并使用 scanf 读取用户输入的数组大小 n。
创建数组:根据用户输入的大小 n 创建一个整型数组 arr。
输入数组元素:使用 printf 打印提示信息,并使用一个循环和 scanf 读取用户输入的数组元素。
调用排序函数:使用 selectionSort 函数对数组进行排序。
输出排序后的数组:使用 printf 打印提示信息,并调用 printArray 函数打印排序后的数组。
6. 程序结束:main 函数返回 0,表示程序正常结束。
标签:arr,20,idx,min,元素,数组,排序 From: https://blog.csdn.net/lxsxjsj/article/details/143418324