【编程练习】三个整数的排序

题目:输入三个正整数x,y,z,请把这三个数由小到大输出。

【方法一】这是C语言教程里常出现的一道题。处理方法是:假设最小的数为x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,最后再比较y与z的值。

示例程序:

#include <stdio.h>

int main(void)
{
   int x,y,z,t;
   printf("\n请输入三个正整数:\n");
   scanf("%d %d %d", &x, &y, &z);
   if (x > y)
 {
   /*交换x,y的值*/
       t = x;
   x = y;
   y = t;
   }
   if(x > z)
 {
   /*交换x,z的值*/
       t = z;
   z = x;
   x = t;
   }
 
   if(y > z)
 {
   /*交换z,y的值*/
       t = y;
   y = z;
   z = t;
   }
   printf("从小到大排序: %d %d %d\n",x,y,z);
 
 return 0;
}

程序输出结果如:

【方法二】假如题目给的限定条件不是3个数,而是很多个数呢?不能再用方法一依次罗列出来进行比较了吧。这时可使用一些排序算法(如冒泡排序、快速排序、选择排序等)。

冒泡排序程序示例:

#include <stdio.h>

// 函数声明
void swap(int array[], int i, int j);
void BubbleSortSmallToBig(int array[], int len);

int main(void)
{
 int a[3];
 printf("\n请输入三个正整数:\n");
 scanf("%d %d %d", &a[0], &a[1], &a[2]);
 BubbleSortSmallToBig(a,3);
 printf("从小到大排序: %d %d %d\n",a[0],a[1],a[2]);
 return 0;
}

//数组内元素交换
void swap(int array[], int i, int j)
{
 int temp = array[i];
 array[i] = array[j];
 array[j] = temp;
}

//冒泡排序:从小到大排序
void BubbleSortSmallToBig(int array[], int len) // O(n*n)
{
 int i = 0;
 int j = 0;
 int temp=0;
 for(i = 0; i < len; i++) //
 {
   for(j = len-1; j > i; j--)
   {
     if( array[j] < array[j-1] )
     {
       swap(array, j, j-1);
     }
   }
 }
}

这是一道常见的排序编程练习题。整数的数目小于等于三个时可用一般的比较方法。当排序的整数个数比较多时可以使用一些排序算法。

每天进步一点点,关注小编,每天和小编一起打卡学习吧!

(0)

相关推荐

  • 趣味编程丨C语言冒泡排序之如何对10个数升序?

    例题:C语言实现从小到大对10个数进行排序,要求使用冒泡排序实现. 解题思路:排序的规律有两种:一种是"升序",从小到大:另一种是"降序",从大到小. 源代码演 ...

  • 三年级速算与巧算三年级整数计算体系已经建...

    三年级速算与巧算 三年级整数计算体系已经建立,计算的考察也逐渐从计算准确率和速度,逐步转为计算灵活性的考察,在教材设置上,四年级的运算律内容是明显的标志. 王老师反对任何形式的技能型计算训练,计算是数 ...

  • 不用编程,三分钟KEGG/GO富集分析火热出炉!

    据不完全统计,今年来基迪奥OmicShare云工具平台的KEGG和GO富集分析工具使用次数已经突破30,000+啦!KEGG和GO富集分析作为平台使用频率最高的工具之一,一直陪伴大家.听许多对生信还不 ...

  • C语言对象编程第三弹:多态

    多态的概念及C++例子 关于多态,之前整理的<什么是面向对象?>这篇文章有说到: 多态按字面的意思就是多种形态.当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态. 多态意味着 ...

  • Python反转三位整数有几种方法?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • 【技巧】分享三种另类的排序方法~

    自定义排序 横向排序 颜色排序 自定义排序 如果手上有一份表格,但是上面的排列乱糟糟的,需要把它弄成想要的排列顺序.我们应该怎么做呢? 选择数据区域,单击[开始]选项卡,选择[排序和筛选]-[自定义排 ...

  • 【青少年编程】【四级】从小到大排序

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载&quo ...

  • 游戏网络编程(三)

    (一)WebSocket简介 短连接:在传统的Http协议中,客户端和服务器端的通信方式是短连接的方式,也就是服务器端并不会保持一个和客户端的连接,在消息发送后,会断开这个连接,客户端下次通信时,必须 ...

  • 【每日编程-424期】西安电子科技大学上机题(三)

    请写一个程序,对于一个m行m列的(1<m<10)的方阵,求其每一行,每一列及主对角线元素之和,最后按照从大到小的顺序依次输出.输入说明:共一组数据,输入的第一行为一个正整数,表示m,接下来 ...

  • C/C++编程笔记:数组部分!三分钟弄懂C语言重点知识

    C或C ++中的数组是存储在连续内存位置的项目的集合,可以使用数组的索引随机访问元素.它们用于存储相似类型的元素,因为所有元素的数据类型必须相同.它们可用于存储原始数据类型的集合,例如任何特定类型的i ...