首页 > 其他分享 >c语言经典20例(输入数组元素,进行排序并输出)

c语言经典20例(输入数组元素,进行排序并输出)

时间:2024-10-31 21:51:53浏览次数:6  
标签:arr 20 idx min 元素 数组 排序

下面是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

相关文章

  • sort() 排序和qsort() 排序(超详细)
    目录前言一、qsort()是什么?1.核心代码:函数的原型参数含义:实际使用(一般只对qsor()函数进行微调)以整形数组进行演示2.其他类型比较一级排序二级排序多级排序二、sort()是什么?1.自动调用(从小到大)2.自定义调用一级排序多级排序三.sort()排序和qsort()排序的区别及各自特......
  • 为什么 C 语言数组是从 0 开始计数的?
    C语言等大多数编程语言的数组从0开始而不从1开始,有两个原因:第一:地址计算更方便C语言从0开始的话,array[i]的地址就正好是:(array+i)如果是从1开始的话,就是(array+i-1)多一次计算,性能受影响,再扩展到二维数组的话array[i][j]从0开始的地址是:(ar......
  • 2024.10.31
    《代码大全2》是一本编程领域的经典之作,为开发者们提供了丰富且实用的指导。在阅读过程中,关于软件构建的前期准备给我留下了深刻印象。书中强调了需求分析的重要性,这就像是大厦的蓝图绘制。如果对需求理解不清晰或存在偏差,后续的代码编写可能会像没有方向的航行。例如,若开发一个......
  • 2024.10.31..
    《代码大全2》是一部编程领域的瑰宝,为编程者打开了一扇通向高质量代码世界的大门。阅读此书,深刻感受到它对于编程全方位的指导意义。从前期的规划设计到具体的代码编写,再到后期的调试优化,无一遗漏。在设计阶段,它教会我们如何准确把握需求,制定合理架构,避免盲目编码。编写代码过程......
  • 2024.10.31.
    《程序员修炼之道》为程序员们呈现了一条从入门到精通的成长路径,宛如一幅指引前行的地图。书中提到的“注重实效的哲学”让我深思。它强调要以一种务实的态度对待编程,明白每个代码决策背后的价值。例如,在选择算法时,不能仅仅因为某个算法新或者复杂就选用,而要根据实际的业务场景......
  • 2024/10/31
    十月的最后一天。CCO2020ExerciseDeadlines交换次数等于逆序对数量,所以我们的目标就是最小化逆序对数量。考虑一个贪心,每次将尽可能大的数放在最后面。用线段树/树状数组来维护即可。「雅礼集训2017Day4」洗衣服有一个做法是分别处理洗完每件衣服的最少时间\(a_i\),和烘......
  • 倍增求后缀数组
    倍增求后缀数组1.一些定义后缀\(i\):子串\([\text{len}(S)-i+1,\text{len}(S)]\);\(\text{SA}(i)\):排名为\(i\)的后缀;\(\text{rank}(i)\):后缀\(i\)的排名,\(\foralli>n,\text{rank}(i)=0\)。后缀数组即\(\text{SA}\)。2.求法先对每个单独的字符从小到大排序,得到每个......
  • 深入理解计算机系统 3.6 数组分配和访问
    C语言中的数组是一种将标量数据聚集成更大数据类型的方式。C语言实现数组的方式非常简单,因此很容易翻译成机器代码。C语言一个不同寻常的特点是可以产生指向数组中元素的指针,并对这些指针进行运算。在机器代码中,这些指针会被翻译成地址计算。3.6.1 基本原则对于数据类型T和......
  • 美亚杯2022个人赛复现
    2022美亚杯个人赛WP案情简介2022年10月,有市民因收到伪冒快递公司的电邮,不慎在犯罪嫌疑人架设的假网站上输入了个人信用卡资料,导致经济损失。经警方调查,发现其中一名受骗市民男子李大輝(TaiFai)的信用卡曾经被犯罪嫌疑人在市内的商店购物。后来警方根据IP地址,锁定及拘捕了一名......
  • 每日算法一练:剑指offer——数组篇(7)
    1.文物朝代确认        展览馆展出来自13个朝代的文物,每排展柜展出5个文物。某排文物的摆放情况记录于数组 places,其中 places[i] 表示处于第 i 位文物的所属朝代编号。其中,编号为0的朝代表示未知朝代。请判断并返回这排文物的所属朝代编号是否能够视为连......