C语言经典算法实例3:数组元素排序

2023-05-16

C语言经典算法实例3:数组元素排序

  • 一、问题描述
  • 二、算法实例编译环境
  • 三、算法实例实现过程
    • 3.1、包含头文件
    • 3.2、定义宏和声明数组
    • 3.3、声明相关变量
    • 3.3、随机生成十个数字赋值给数组
    • 3.4、输出随机生成的十个数字
    • 3.5、数组从小到大进行排序
    • 3.6、输出数组元素排序好的数字
  • 四、经典算法实例程序 完整代码
    • 4.1、main.h文件
    • 4.2、main.c文件
  • 五、总结

在这里插入图片描述

一、问题描述

求数组的排序
问题的描述
如下几点所示

  1. 使用rand()库函数随机生成10个1-100之间的数字。
  2. 声明数组的大小为10。
  3. 随机生成的10个数字赋值给数组。
  4. 给数组内的元素由小到大排序。

二、算法实例编译环境

本文C语言经典算法实例的编译环境,使用的是集成开发环境:Visual Studio 2019
在这里插入图片描述

在这里插入图片描述

Visual Studio 2019官网链接如下

Visual Studio 2019官网链接
在这里插入图片描述

Visual Studio 2019集成的开发环境的特点有

    1. Visual Studio 2019默认安装Live Share代码协作服务。
    1. 帮助用户快速编写代码的新欢迎窗口、改进搜索功能、总体性能改进。
    1. Visual Studio IntelliCode AI帮助。
    1. 更好的Python虚拟和Conda支持。
    1. 以及对包括WinForms和WPF在内的.NET Core 3.0项目支持等。

三、算法实例实现过程

3.1、包含头文件

包含头文件 代码如下所示


#pragma once


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 10		// 定义宏


  • 将要用到的C语言头文件包含近年来。

3.2、定义宏和声明数组

定义宏和声明数组 代码如下所示

	#define MAX 10		// 定义宏
    int myArr[MAX];     // 定义数组变量
  • 定义了MAX ,代表了MAX 为常数10。
  • 声明了数组myArr。

3.3、声明相关变量

声明相关变量 代码如下所示

    int i, j, tempVal;  // 定义变量
  • 声明相关变量i, j, tempVal。

3.3、随机生成十个数字赋值给数组

随机生成十个数字赋值给数组 代码如下所示

	 /// <summary>
    /// 随机生成十个数字赋值给数组
    /// </summary>
    /// <returns></returns>
    srand(time(NULL));
    for (i = 0; i < 10; i++)
    {
        myArr[i] = rand() % 100 + 1;
    }
  • srand(time(NULL))可以保证每一次生成的数字都不同。
  • 通过循环,将随机生成十个数字赋值给数组。
    在这里插入图片描述

3.4、输出随机生成的十个数字

输出随机生成的十个数字 代码如下所示

 	 /// <summary>
    /// 输出随机生成的十个数字
    /// </summary>
    /// <returns></returns>
    printf("The ten randomly generated numbers are as follows\n");
    for (i = 0; i < 10; i++)
    {
        printf("%d ", myArr[i]);
    }
    printf("\n");
  • 输出 我们向数组中输入的数据。

按F5进行编译,调试结果如下所示。

在这里插入图片描述

  • 可以正确的输出随机生成的数字,存储于数组中的数据。

3.5、数组从小到大进行排序

数组从小到大进行排序 代码如下所示

	 /// <summary>
    ///  数组从小到大进行排序
    /// </summary>
    /// <returns></returns>
    for (j = 0; j < 10; j++)
    {
        for (i = 0; i < 9 - j; i++)
        {
            if (myArr[i] > myArr[i + 1])
            {
                tempVal = myArr[i];

                myArr[i] = myArr[i + 1];
                
                myArr[i + 1] = tempVal;
            }
        }
    }
  • 数组的排序方式为从小到大
  • 采用的排序方式为冒泡排序

3.6、输出数组元素排序好的数字

输出数组元素排序好的数字 代码如下所示

 /// <summary>
    /// 输出数组元素排序好的数字
    /// </summary>
    /// <returns></returns>
    printf("\nThe ten randomly generated numbers are sorted from smallest to largest as follows\n");
    for (i = 0; i < 10; i++)
    {
        printf("%d ", myArr[i]);
    }
    printf("\n\n");

  • 可以输出排序好的数字。
  • 数字存储于数字之中。

按F5进行编译,调试结果如下所示。

在这里插入图片描述

The ten randomly generated numbers are as follows
78 95 27 65 62 83 19 74 8 90

The ten randomly generated numbers are sorted from smallest to largest as follows
8 19 27 62 65 74 78 83 90 95

请按任意键继续. . .
  • 可以看做数字是从小到大排序输出的。
  • 排序算法符合要求。

四、经典算法实例程序 完整代码

经典算法实例程序完整代码如下所示

4.1、main.h文件

#pragma once


#include <stdio.h>
#include <stdlib.h>
#include <time.h>


#define MAX 10		// 定义宏

4.2、main.c文件

#define _CRT_SECURE_NO_WARNINGS

#include "Main.h"

int main()
{
    system("color 3E");

    int myArr[MAX];     // 定义数组变量

    int i, j, tempVal;  // 定义变量

    /// <summary>
    /// 随机生成十个数字赋值给数组
    /// </summary>
    /// <returns></returns>
    srand(time(NULL));
    for (i = 0; i < 10; i++)
    {
        myArr[i] = rand() % 100 + 1;
    }

    /// <summary>
    /// 输出随机生成的十个数字
    /// </summary>
    /// <returns></returns>
    printf("The ten randomly generated numbers are as follows\n");
    for (i = 0; i < 10; i++)
    {
        printf("%d ", myArr[i]);
    }
    printf("\n");

    /// <summary>
    ///  数组从小到大进行排序
    /// </summary>
    /// <returns></returns>
    for (j = 0; j < 10; j++)
    {
        for (i = 0; i < 9 - j; i++)
        {
            if (myArr[i] > myArr[i + 1])
            {
                tempVal = myArr[i];

                myArr[i] = myArr[i + 1];

                myArr[i + 1] = tempVal;
            }
        }
    }

    /// <summary>
    /// 输出数组元素排序好的数字
    /// </summary>
    /// <returns></returns>
    printf("\nThe ten randomly generated numbers are sorted from smallest to largest as follows\n");
    for (i = 0; i < 10; i++)
    {
        printf("%d ", myArr[i]);
    }
    printf("\n\n");


    system("pause");
    return 0;
}

五、总结

C语言经典算法实例:数组元素排序,要实现的目标如下和要点如下

  1. 使用rand()库函数随机生成10个1-100之间的数字。
  2. 声明数组的大小为10。
  3. 随机生成的10个数字赋值给数组。
  4. 给数组内的元素由小到大排序。
  5. 排序方式为冒泡排序方式。

在这里插入图片描述

文到这里就结束啦。
希望本文的C语言经典算法实例:数组元素排序。
能激发你对C语言以及算法学习的热爱。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言经典算法实例3:数组元素排序 的相关文章

随机推荐

  • 机器学习之逻辑回归

    一 逻辑回归基本介绍 Logistic Regression 用于分类问题监督学习算法 二 逻辑回归工作原理 根据现有数据对分类边界线建立回归公式 xff0c 具体分为以下三步 1 将决策边界表示为 z 61 W1X1 43 W2X2 43
  • Java数组:一维数组中元素移动问题

    描述 描述 给定一组整数 xff0c 要求利用数组把这组数保存起来 xff0c 实现对数组中的数循环移动 假定共有n个整数 xff0c 则要使前面各数顺序向后移m个位置 xff0c 并使最后m个数变为最前面的m个数 要求只用一个数组的方式实
  • iOS UIAlertController 用法介绍

    原文 xff1a https www jianshu com p b72753c51b39 UIAlertController UIAlertController的用法很简单 我们却经常使用 它用以取代iOS 8 0 之前的UIAlertV
  • 问题解决:在基于anaconda的spyder中安装第三方库

    问题描述 cmd中python包的工作路径与anaconda安装路径是同一级目录 xff0c 因此anaconda下的spyder并不能检测到该包 xff0c 直接使用命令行win 43 r cmd pip无效 xff1a 解决方案 找到a
  • postgresql表操作

    postgresql数据库操作 1 表基本操作1 1创建表1 2 查看表1 3清空表数据1 4删除表1 5退出数据库 2 表属性操作2 1增加列2 2删除列2 3修改列属性2 4增加列非空约束2 5 增加列唯一约束2 6删除主键约束2 7创
  • linux用户设置

    目录 用户和用户组 cy 用户名 cy xff1a 用户全名称 su xff1a 切换用户 userdel xff1a 删除用户 groupadd xff1a 创建组 普通组 xff0c 由系统默认生成的叫做主组 gpasswd xff1a
  • 输入十个数,求最大数,最小数,以及去掉两最值数的平均值。

    实现简单的评分 十个评分 xff0c 去最高和最低分 xff0c 求最后的平均分
  • Windows虚拟机通过libvirt使用CEPH RBD

    kvm虚拟机通过 libvirt 挂在 ceph rbd作为数据盘 一 首先确定我们的ceph环境是HEALTH OK span class token punctuation span root 64 cephmon ceph span
  • 英伟达独立显卡直通虚拟机

    显卡直通KVM虚拟机 1 确认CPU是否支持硬件虚拟化 egrep span class token operator span o span class token string 39 vmx svm 39 span span class
  • Nginx反向代理实现部署dist文件

    Linux服务器安装nginx可以参考文章 Linux服务器安装Nginx Nginx常用命令可以参考文章 Nginx 启动 关闭 重启 检测等常用命令 1 创建文件存放dist文件 我的nginx安装目录为 xff1a usr local
  • ffmepg+SDL2编译安装生成ffplay播放器

    ffmpeg 43 SDL2编译生成ffplay播放器 SDL2 xff1a Simple DirectMedia Layer 是一个跨平台开发库 xff0c 旨在通过 OpenGL 和 Direct3D 提供对音频 键盘 鼠标 游戏杆和图
  • 配置本地yum源和apt源,离线安装make、gcc、g++编译工具

    配置本地yum源和apt源 xff0c 离线安装make gcc等编译工具 起因 xff1a 安装的新操作系统的机器没有网卡驱动 xff0c 离线安装网卡驱动 xff0c 需要make和gcc编译工具 1 准备镜像源 centos7 xff
  • Linux防火墙firewall的使用

    LInux防火墙firewall的常用规则 一 firewall服务的启用和停止 1 开启firewall服务 systemctl start firewalld 2 关闭firewall服务 systemctl stop firewall
  • Windows 11 笔记本开热点,手机连接一直寻找 IP 或者出现已连接但无法访问Intenet网络

    Windows 11 笔记本开热点 手机连接一直寻找 IP 或者出现已连接但无法访问Intenet网络 原因 不管是宽带连接还是以太网连接 xff0c 出现这个问题是因为电脑没有开启共享网络 解决 打开网络适配器 网络和internet g
  • 美颜技术---几种常用磨皮滤波器

    磨皮滤波器 磨皮模块的功能需求 xff1a 把图像中人物身上的噪点进行滤除 xff0c 噪点包含痘痘 xff0c 色斑 xff0c 痤疮等 实现磨皮这一功能通常是使用 保边滤波器 对图像进行平滑处理 xff0c 而保边滤波器的一个重要特性是
  • 原创 服务器群集——源码编译安装LNMP(搭建基于LNMP架构的Discuz论坛)

    这里写目录标题 一 LNMP架构解读MySQL安装配置PHP解析环境的安装配置Nginx支持PHP环境 二 LNMP应用部署1 安装nginx2 安装MYSQL3 安装php4 让nginx支持PHP5 创建数据库6 更改测试页内容7 安装
  • 链表头插法

    头插法 从一个空表头指针开始 xff0c 重复读入数据 xff0c 生成新节点 xff0c 将读入数据存放到新节点的数据域中 xff0c 永远是将新节点插入到当前链表的头节点的后面 xff0c 第一个创建的节点是放在最后的 xff0c 直到
  • AD20 Channel-Offset Error 解决办法

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言AD20 PCB相同电路模块ROOM格式复用时出现 Channel Offset Error 解决办法 一 问题现象二 解决
  • Shell中declare -A的用法?

    请教一下在shell里这个declare A 是的用法 xff0c A代表什么参数 xff1f 为什么执行结果不是按顺序输出的 xff1f
  • C语言经典算法实例3:数组元素排序

    C语言经典算法实例3 xff1a 数组元素排序 一 问题描述二 算法实例编译环境三 算法实例实现过程3 1 包含头文件3 2 定义宏和声明数组3 xff13 声明相关变量3 xff13 随机生成十个数字赋值给数组3 4 输出随机生成的十个数