冒泡排序;100~200的素数打印;辗转相除(学习笔记)

简介: 冒泡排序;100~200的素数打印;辗转相除(学习笔记)

1 冒泡排序

冒泡排序是以数组为基础的用数组下表对数字进行比大小而后进行大小的排列。

先上代码

int main(void)
{
  int tmp = 0;
  int arr [40] = { 0 };
  int i = 0;
  for (i = 0; i < 3; i++)
  {
    scanf("%d", &arr[i]);
  }
  int j = 0;
  for (i = 0; i < 3; i++)
  {
    for (j = 0; j < 2 - i; j++)
    {
      if (arr[j] < arr[j + 1])
      {
        tmp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = tmp;
      }
    }
  }
  for (i = 0; i < 3; i++)
  {
    printf("%d ", arr[i]);
  }
  return 0;
}

(这是只对3个数字的冒泡排序部分,可用scanf和n对其进行升级但是作者就偷懒了)

下面我对其进行小讲解

讲解

int j = 0;
  for (i = 0; i < 3; i++)
  {
    for (j = 0; j < 2 - i; j++)
    {
      if (arr[j] < arr[j + 1])
      {
        tmp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = tmp;
      }
    }

这是冒泡的主体for循环是为了控制排序次数,内部是对arr数组内的数字的排序。

100~200的素数打印

int main(void)
{
  int n = 0;
  int i = 0;
  for (n = 100; n <= 200; n++)
  {
    for (i = 2; i < n-1; i++)
    {
      if (n % i == 0)
      {
        break;
      }
    }//第二个for循环结束
    if (n % i != 0)
    {
      printf("%d ", n);
    }
  }
}

简单粗暴直接用数字本身去÷(除一)以外的所有比它小的数简单粗暴但效率较低

我依旧对其简单分析

我们通过第一个for循环将100~200的数字输入其中再通过第二个for循环对其进行比它小的除法运算一旦有数字与他相除余数为零就跳出第二个for循环而后再由if判断是中途跳出还是进行完成for循环跳出如是第二种就打印。


辗转相除


通过辗转相除可以较快速的输出两个数的公约数

使用方法

通过数字来讲解

先用 48/36 = 1…12;

然后用36/12 = 3…0;

那么12就是48与36的最大公约数

其实就是用一个较大的数去÷哪个较小的数如果余数为0则较小的数----也就是除数为最大公约数如果不为零则要用较小的除数去除余数通过反复的计算直到余数为零

int main()
{
  int a = 0;
  int b = 0;
  scanf("%d %d", &a, &b);
  int z = a%b;
  while (z)
  {
    a = b;
    b = z;
    z = a % b;
  }
  printf("%d", b);
}
相关文章
|
8月前
|
存储 弹性计算 运维
打印斐波那契数列
【4月更文挑战第29天】
61 0
|
存储 人工智能 算法
【快速排序、归并排序、整数&浮点数二分查找】思路讲解及代码实现
用一篇Blog来讲解下最近学到的快速排序,归并排序,二分查找等处理数据的方式,为日后的刷题打下坚实的基础。
135 0
|
算法 C++
快排例题——第k个数
做道简单一点的题巩固一下
C语言经典实例:21-30例:插入排序、希尔排序1、快速排序、希尔排序2、递归法、完数、斐波那契数列、公约数和公倍数、判断水仙花数统计单词个数
C语言经典实例:21-30例:插入排序、希尔排序1、快速排序、希尔排序2、递归法、完数、斐波那契数列、公约数和公倍数、判断水仙花数统计单词个数
C语言经典实例:21-30例:插入排序、希尔排序1、快速排序、希尔排序2、递归法、完数、斐波那契数列、公约数和公倍数、判断水仙花数统计单词个数
复习C部分:1.for循环 2.do while循环语句 3.在一个有序数组中查找某个数,例如在1~10之间找7(例题包含计算n的阶乘+打印1~10的奇数+二分法)
复习C部分:1.for循环 2.do while循环语句 3.在一个有序数组中查找某个数,例如在1~10之间找7(例题包含计算n的阶乘+打印1~10的奇数+二分法)
125 0
复习C部分:1.for循环 2.do while循环语句 3.在一个有序数组中查找某个数,例如在1~10之间找7(例题包含计算n的阶乘+打印1~10的奇数+二分法)
打印 斐波那契数列
打印 斐波那契数列
97 0
|
算法
基础算法练习200题16、打印质数
基础算法练习200题16、打印质数
90 0
基础算法练习200题16、打印质数
|
C语言
C语言(素数)[解法]:编写prime(m)判断m是否为素数,当m为素数返回1,否则返回0;
C语言(素数)[解法]:编写prime(m)判断m是否为素数,当m为素数返回1,否则返回0;
498 0
|
算法
剑指Offer算法题解:17. 打印从1到最大的n位数
剑指Offer算法题解:17. 打印从1到最大的n位数
95 0