数字的排序

简介: 原理:(升序)将一串乱序数组中的数字元素进行相邻两两比较,如果第一个数字大于第二个数字,进行交换。然后继续进行第二个和第三个比较,如果第二个数比第三个数大,进行交换,反之则继续下一次比较。数组进行第一次全数组比较将得到数组中最大的数字放在数组最后。

C语言中的数字排序法有很多:


1.冒泡排序法


2.选择排序法


3.比较排序法


4.快速排序法


......


冒泡排序法


原理:(升序)将一串乱序数组中的数字元素进行相邻两两比较,如果第一个数字大于第二个数字,进行交换。然后继续进行第二个和第三个比较,如果第二个数比第三个数大,进行交换,反之则继续下一次比较。数组进行第一次全数组比较将得到数组中最大的数字放在数组最后。然后进行第二次数组大比较,减去第一轮得到的最大数字得到第二大的数字放到数组倒数第二位。以此类推,将乱序数组由小到大排序。


以下为实践程序


#include<stdio.h>
void cmd(int num[])
{
  int a = 1;
  int i = 0;
  int t;
  for (i = 1; i < 10; i++)
  {
    for (int j = 0; j < 10 - i; j++)
    {
      if (num[j] > num[j + 1])
      {
        a = 0;
        t = num[j];
        num[j] = num[j + 1];
        num[j + 1] = t;
      }
    }
    if (a == 1)
      break;
  }
}
int main(void)
{
  int num[10];
  for (int i = 0; i < 10; i++)
  {
    scanf("%d", &num[i]);
  }
  cmd(num);
  for (int i = 0; i < 10; i++)
  {
    printf("%d ", num[i]);
  }
  return 0;
}

447550111b944f098338b2c289e45882.png


479ca20fb88d4e72b5178d452a47a48b.png


选择排序法


原理:(升序)将乱序数组从将第一个数字确定与后面的数字挨个比较,如果第一个数字比后面比较的数大就交换,反正则继续比较,第一次全部比较完得到最小的数字在第一位。进行第二轮比较,从第二个数开始,与后面的数进行比较得到第二小的数放在第二位。以此类推则可得到升序的数组。


见代码


#include<stdio.h>
void cmd(int num[])
{
  int t;
  for (int i = 0; i < 9; i++)
  {
    for (int j = i + 1; j < 10; j++)
    {
      if (num[i] > num[j])
      {
        t = num[j];
        num[j] = num[i];
        num[i] = t;
      }
    }
  }
}
int main(void)
{
  int num[10];
  for (int i = 0; i < 10; i++)
  {
    scanf("%d", &num[i]);
  }
  cmd(num);
  for (int i = 0; i < 10; i++)
  {
    printf("%d ", num[i]);
  }
  return 0;
}

a26b9b270e124e4894907c2b8aca906d.png

762cd2252c8c4694bad87ea4f315d950.png


比较排序法


原理:(升序) 在一个乱序数组中,先将第一个数的下标记住,然后和剩下的数字进行比较,如果第一个数大于剩下的数,将大于第一个数的角标进行交换,找到最小数的角标后,如果不在第一位时,则将位置互换,将最小的数字放到最左边,以此类推,将得到完整升序数列。


见代码:


#include<stdio.h>
void cmd(int* p)
{
  int t;
  int a;
  for (int i = 0; i < 10; i++)
  {
    a = i;
    for (int j = i; j < 10; j++)
    {
      if (p[a] > p[j])
        a = j;
    }
    if (a != i)
    {
      t = p[i];
      p[i] = p[a];
      p[a] = t;
    }
  }
}
int main(void)
{
  int num[10];
  for (int i = 0; i < 10; i++)
  {
    scanf("%d", &num[i]);
  }
  cmd(num);
  for (int i = 0; i < 10; i++)
    printf("%d ", num[i]);
  return 0;
}


8ee84ad0b172434daf85fb8725e24a9b.png


以上是三种比较常见的C语言排序方法!!!  

目录
相关文章
|
JavaScript 前端开发 数据库
让你少踩坑的fastadmin教程(3)
让你少踩坑的fastadmin教程
1987 0
让你少踩坑的fastadmin教程(3)
|
5月前
|
人工智能 API 调度
从ModelScope到生产环境:如何构建“指挥官+调度官”的高可用智能体集群?
本文提出阿里云双层Agent治理架构:AI指挥官专注任务拆解与流程编排,AI调度官负责模型智能路由。通过解耦决策与执行,融合Qwen系列模型能力,在保障效果前提下实现降本40%+、提效显著,为企业提供可落地的生成式AI解决方案。(239字)
293 9
|
6月前
|
存储 小程序 前端开发
开源版婚恋社交系统:基于PHP开发,集成实时音视频匹配、IM聊天、邀约组局与红娘管理模块的小程序!
系统基于uni-app+PHP全开源架构,支持1V1音视频、IM聊天、兴趣组局、红娘匹配等功能,覆盖都市社交、线上相亲、线下活动等多元场景,助力高效交友与婚恋服务,跨端兼容,灵活二开。
587 1
|
6月前
|
弹性计算 Linux 数据中心
阿里云服务器公共镜像、社区镜像、自定义镜像、共享镜像、云市场镜像区别及选择参考
阿里云服务器镜像(也就是云服务器的操作系统)有公共镜像、自定义镜像、共享镜像、云市场镜像、社区镜像可选,对于新手用户来说,不知道他们之间的区别,因此往往不知道如何选择,下面我们来看看他们之间的区别就知道如何选择了。
729 1
|
7月前
|
人工智能 自然语言处理 搜索推荐
【2025云栖大会】阿里云助力金山办公打造智能搜索新标杆:WPS云文档搜索技术全面升级
2025年9月26日,杭州云栖大会“AI搜索与向量引擎”分论坛上,金山办公云搜索技术总监——陈海荣宣布,其核心产品WPS云文档搜索功能结合阿里云搜索引擎完成重大升级,正式迈入3.0时代。
538 0
|
自然语言处理 IDE 测试技术
灵动指间,快码加编,你的智能编码助手 ——通义灵码
通义灵码是一款强大的智能编码辅助工具,具备优秀的代码补全、快速生成、全面功能、强兼容性和企业私域知识库支持等优点。它能显著提升开发者的编码效率,减少错误,支持200多种编程语言,兼容主流IDE,是现代编程的理想助手。
814 0
|
11月前
|
敏捷开发 数据可视化 安全
研发项目管理工具如何赋能团队高效协作与交付?
研发项目管理工具是专为技术团队设计的数字化协同平台,支持敏捷开发、任务分配、缺陷追踪和版本控制等核心功能。与传统项目管理工具不同,它更强调灵活响应需求变更、深度集成开发工具链和知识共享。典型工具包括Jira、Tapd和国产的板栗看板等,选型需考虑团队规模、行业特性和安全需求。成功实施需分阶段推进,重视员工培训和流程适配。这类工具已成为提升研发效率、保障项目质量的关键基础设施。
274 0
|
机器学习/深度学习 算法 数据挖掘
周志华《机器学习》课后习题(第九章):聚类
周志华《机器学习》课后习题(第九章):聚类
1622 0
周志华《机器学习》课后习题(第九章):聚类
|
机器学习/深度学习 PyTorch TensorFlow
DGL(0.8.x) 技术点分析
DGL是由Amazon发布的图神经网络开源库,支持TensorFlow、PyTorch和MXNet。DGL采用消息传递范式进行图计算,包括边上计算、消息函数、点上计算、聚合与更新函数等。其架构分为顶层业务抽象、Backend多后端适配、Platform高效计算适配以及C++性能敏感功能层,确保高效、灵活的图神经网络开发。
|
Linux 数据安全/隐私保护
linux特殊权限!!
本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。
526 1
linux特殊权限!!