C语言算法练习之数组元素排序

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

一、问题描述

求数组的排序

问题的描述

如下几点所示

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

二、算法实例编译环境

本文C语言经典算法实例的编译环境,使用的是集成开发环境:Visual Studio 2019

Visual Studio 2019官网链接如下

Visual Studio 2019官网链接

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

  • Visual Studio 2019默认安装Live Share代码协作服务。
  • 帮助用户快速编写代码的新欢迎窗口、改进搜索功能、总体性能改进。
  • Visual Studio IntelliCode AI帮助。
  • 更好的Python虚拟和Conda支持。
  • 以及对包括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.4、随机生成十个数字赋值给数组

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

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

srand(time(NULL))可以保证每一次生成的数字都不同。

通过循环,将随机生成十个数字赋值给数组。

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

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

      /// <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.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");

数组的排序方式为从小到大

采用的排序方式为冒泡排序

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

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

 /// <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语言经典算法实例:数组元素排序,要实现的目标如下和要点如下

使用rand()库函数随机生成10个1-100之间的数字。

声明数组的大小为10。

随机生成的10个数字赋值给数组。

给数组内的元素由小到大排序。

排序方式为冒泡排序方式。

到此这篇关于C语言算法练习之数组元素排序的文章就介绍到这了,更多相关C语言数组元素排序内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言算法练习之求二维数组最值问题

    目录 一.问题描述 二.算法实例编译环境 三.算法实例实现过程 3.1.包含头文件 3.2.定义宏和声明数组 3.3.声明相关变量 3.4.输入数组(方阵)的阶 3.5.输出 “输入的数组” 3.6.计算每行最大数据中的 最小的那一个数字 3.7.计算每行最小数据中的 最大的那一个数字 四.经典算法实例程序 4.1.main.h文件 4.2.main.c文件 五.总结 一.问题描述 求二维数组最大最小值 问题的描述 如下几点所示 1.在n 行 n 列的二维整数数组中,按以下要求选出两个数. 2.

  • C语言对数组元素进行冒泡排序的实现

    在实际开发中,有很多场景需要我们将数组元素按照从大到小(或者从小到大)的顺序排列,这样在查阅数据时会更加直观,例如: 一个保存了班级学号的数组,排序后更容易分区好学生和坏学生: 一个保存了商品单价的数组,排序后更容易看出它们的性价比. 对数组元素进行排序的方法有很多种,比如冒泡排序.归并排序.选择排序.插入排序.快速排序等,其中最经典最需要掌握的是「冒泡排序」. 以从小到大排序为例,冒泡排序的整体思想是这样的: 从数组头部开始,不断比较相邻的两个元素的大小,让较大的元素逐渐往后移动(交换两个元素

  • C语言算法练习之数组求素数

    目录 一.问题描述 二.算法实例编译环境 三.算法实例实现过程 3.1.包含头文件 3.2.声明数组 3.3.声明相关变量 3.4.数组赋值 3.5. 输出数组里面元素的值 3.6.求素数.素数和.最大的素数 3.7.输出所求的素数.素数和.最大的素数 四.经典算法实例程序 4.1.main.h文件 4.2.main.c文件 五.总结 一.问题描述 数组求素数 问题的描述 如下几点所示 输出1750 到 1850 之间的素数. 计算并输出1750 到 1850 之间的素数之和 S. 并且输出最大

  • C语言将数组中元素的数排序输出的相关问题解决

    问题描述:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个.例如输入数组{32,  321},则输出这两个能排成的最小数字32132.请给出解决问题的算法,并证明该算法.       思路:先将整数数组转为字符串数组,然后字符串数组进行排序,最后依次输出字符串数组即可.这里注意的是字符串的比较函数需要重新定义,不是比较a和b,而是比较ab与 ba.如果ab < ba,则a < b:如果ab > ba,则a > b:如果ab = ba,则a = b.比较

  • C语言算法练习之数组元素排序

    目录 一.问题描述 二.算法实例编译环境 三.算法实例实现过程 3.1.包含头文件 3.2.定义宏和声明数组 3.3.声明相关变量 3.4.随机生成十个数字赋值给数组 3.5.输出随机生成的十个数字 3.6.数组从小到大进行排序 3.7.输出数组元素排序好的数字 四.经典算法实例程序 完整代码 4.1.main.h文件 4.2.main.c文件 五.总结 一.问题描述 求数组的排序 问题的描述 如下几点所示 使用rand()库函数随机生成10个1-100之间的数字. 声明数组的大小为10. 随机

  • Go语言算法之寻找数组第二大元素的方法

    本文实例讲述了Go语言算法之寻找数组第二大元素的方法.分享给大家供大家参考.具体如下: 该算法的原理是,在遍历数组的时,始终记录当前最大的元素和第二大的元素.示例代码如下: 复制代码 代码如下: package demo01    import (      "fmt"  )    func NumberTestBase() {      fmt.Println("This is NumberTestBase")        nums := []int{12, 2

  • JS随机洗牌算法之数组随机排序

    推荐阅读:JavaScript学习笔记之数组的增.删.改.查 JavaScript学习笔记之数组求和方法 JavaScript学习笔记之数组随机排序 洗牌算法是一个比较形象的术语,本质上让一个数组内的元素随机排列.举例来说,我们有一个如下图所示的数组,数组长度为 9,数组内元素的值顺次分别是 1~9: 从上面这个数组入手,我们要做的就是打乱数组内元素的顺序: 代码实现 维基百科上的 Fisher–Yates shuffle 词条对洗牌算法做了详细介绍,下面演示的算法也是基于其中的理论编写的: A

  • C语言中使用快速排序算法对元素排序的实例详解

    调用C语言的快速排序算法qsort(); #include<stdio.h> #include<stdlib.h> #include<string.h> #define SIZE 100 //从小到大排序 int comp1(const void *x,const void *y) { return *(int *)x - *(int *)y; } //从大到小排序 int comp2(const void *x,const void *y) { return *(in

  • Golang算法问题之数组按指定规则排序的方法分析

    本文实例讲述了Golang算法问题之数组按指定规则排序的方法.分享给大家供大家参考,具体如下: 给出一个二维数组,请将这个二维数组按第i列(i从1开始)排序,如果第i列相同,则对相同的行按第i+1列的元素排序, 如果第i+1列的元素也相同,则继续比较第i+2列,以此类推,直到最后一列.如果第i列到最后一列都相同,则按原序排列. 样例输入: 1,2,3 2,3,4 2,3,1 1,3,1 按第2列排序,输出: 1,2,3 2,3,1 1,3,1 2,3,4 代码实现: 复制代码 代码如下: pac

  • 算法学习入门之使用C语言实现各大基本的排序算法

    首先来看一下排序算法的一些相关概念: 1.稳定排序和非稳定排序 简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就说这种排序方法是稳定的.反之,就是非稳定的. 比如:一组数排序前是a1,a2,a3,a4,a5,其中a2=a4,经过某种排序后为a1,a2,a4,a3,a5,则我们说这种排序是稳定的,因为a2排序前在a4的前面,排序后它还是在a4的前面.假如变成a1,a4,a2,a3,a5就不是稳定的了. 2.内排序和外排序 在排序过程中,所有需要排序的数都在内存,

  • C语言中使用qsort函数对自定义结构体数组进行排序

    目录 使用qsort函数对自定义结构体数组进行排序 结构体 排序函数 总体代码 C语言 qsort()函数详解 1.qsort概念介绍 2.qsort()函数实现(循序渐进式讲解) 3.小结 使用qsort函数对自定义结构体数组进行排序 qsort进行排序的数组存储的不能是结构体的指针,需要是结构体本身. 结构体 struct student{     char* id;     int mark; }arr[4], test0={"0001",80}, test1={"00

  • Java数组常用排序算法实例小结

    本文实例讲述了Java数组常用排序算法.分享给大家供大家参考,具体如下: 1.冒泡排序法 SortArray_01.java public class SortArray_01 { public static void main(String args[]) { int[] array = { 14, 5, 86, 4, 12, 3, 21, 13, 11, 2, 55, 66, 22 }; // 创建一个初始化的一维数组array System.out.println("未排序的数组:&quo

随机推荐