递归冒泡排序的C程序

递归冒泡排序的c程序

冒泡排序是最简单的排序算法之一,用于通过比较相邻元素对数据进行排序。所有元素都分阶段进行比较。第一阶段将最大值放在最后,第二阶段将第二大元素放在倒数第二个位置,依此类推,直到完整列表排序完毕。

冒泡排序算法

int arr[5]= { 5,4,2,1,3 };

int i, j ;

从索引 i=0 遍历到 i

从索引 j=0 遍历到数组size – i – 1

如果 arr[i]>arr[j] 将 arr[i] 与 arr[j] 交换

结束

递归冒泡排序

如果数组length 为 1 则返回

遍历数组一次,固定最大元素在末尾​​p>

其余部分递归执行步骤 2除最后一个元素之外的数组

示例

输入 − Arr[] = { 5,7,2,3, 1,4}; length=6

输出 − 排序数组:1 2 3 4 5 7

说明 

First Pass5 7 2 3 1 4 → swap → 5 2 7 3 1 45 2 7 3 1 4 → swap → 5 2 3 7 1 45 2 3 7 1 4 → swap → 5 2 3 1 7 45 2 3 1 7 4 → swap → 5 2 3 1 4 7Second Pass5 2 3 1 4 7 → swap → 2 5 3 1 4 72 5 3 1 4 7 → swap → 2 3 5 1 4 72 3 5 1 4 7 → swap → 2 3 1 5 4 72 3 1 5 4 7 → swap → 2 3 1 4 5 7Third Pass2 3 1 4 5 7 → swap → 2 1 3 4 5 72 1 3 4 5 7 no swapFourth Pass2 1 3 4 5 7 → swap → 1 2 3 4 5 71 2 3 4 5 7 no swap in further iterations

输入− Arr[] = { 1, 2, 3, 3, 2 };

输出− 排序数组:1 2 2 3 3

说明

First Pass1 2 3 3 2 → swap → 1 2 3 2 31 2 3 2 3 → swap → 1 2 2 3 31 2 2 3 3 no swap in further iterationsSecond Pass1 2 2 3 3 no swap in further iterations

下面程序中使用的方法如下

在冒泡排序的递归方法中,基本情况是数组长度= 1。否则使用单个for循环遍历数组并相应地交换元素。

将输入数组 Arr[] 和长度作为其中元素的数量。

函数 recurbublSort(int arr[], int len) 获取数组及其长度,并使用冒泡排序对数组进行递归排序。

获取变量 temp。

如果数组长度为 1,则返回 void。

否则使用单个 for 循环遍历数组,并针对每个元素 arr[i]>arr[i+1 ],交换这些元素。

设置 temp=arr[i]、arr[i]=arr[i+1] 和 arr[i+1]=temp。

现在将长度减 1,因为上一个循环将最大元素放置在最后一个位置。

递归调用recurbublSort(arr,len)。

在所有调用结束时,当 len 变为 1 时,我们将退出递归并对数组进行排序。

在 main 中打印排序后的数组。

示例

#include void recurbublSort(int arr[], int len){   int temp;   if (len == 1){      return;   }   for (int i=0; i arr[i+1]){         temp=arr[i];         arr[i]=arr[i+1];         arr[i+1]=temp;      }   }   len=len-1;   recurbublSort(arr, len);}int main(){   int Arr[] = {21, 34, 20, 31, 78, 43, 66};   int length = sizeof(Arr)/sizeof(Arr[0]);   recurbublSort(Arr, length);   printf("Sorted array : ");   for(int i=0;i<length;i++){      printf("%d ",Arr[i]);   }   return 0;}

输出

如果我们运行上面的代码,它将生成以下输出

Sorted array: 20 21 31 34 43 66 78

以上就是递归冒泡排序的C程序的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1445251.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 22:20:25
下一篇 2025年12月16日 20:18:59

相关推荐

  • 将以下内容翻译为中文:使用递归在C程序中将二进制转换为格雷码

    二进制数是只有两位 0 和 1 的数字。 格雷码是一种特殊类型的二进制数,其属性是代码的两个连续数字 em> 的差异不能超过一位。格雷码的这一特性使其在 K-map、纠错、通信等方面更加有用。 这使得二进制到格雷码的转换成为必要。那么,让我们看一下将二进制转换为格雷码的算法使用递归。 示例 让…

    2025年12月17日
    000
  • 递归程序在C++中检查一个数字是否是回文数

    我们得到一个整数作为输入。目标是使用递归来确定输入数字 Num 是否为回文。 要检查一个数字是否为回文,请反转该数字并检查两个数字是否相同。如果反转后的数等于原数,则为回文。 示例 输入− Num = 34212; 输出− 34212 不是回文! 解释− 如果我们反转 34212,则得到 21243…

    2025年12月17日
    000
  • 在C++中递归插入和遍历链表

    我们得到了用于形成链表的整数值。任务是使用递归方法先插入然后遍历单链表。 在末尾递归添加节点 如果 head 为 NULL → 将节点添加到 head 否则添加到 head( head → next ) 递归遍历节点 如果 head 为 NULL → 退出 立即学习“C++免费学习笔记(深入)”; …

    2025年12月17日
    000
  • 递归解码一个以计数后跟子字符串编码的字符串

    在这个问题中,我们需要通过重复添加总计数次数来解码给定的字符串。 我们可以采用三种不同的方法来解决问题,并且可以使用两个堆栈或一个堆栈来解决问题。另外,我们可以在不使用两个堆栈的情况下解决问题。 问题陈述 – 我们给出了一个字符串 str ,其中包含左括号和右括号、字母和数字字符。我们需…

    2025年12月17日
    000
  • 打印从1到100的数字的程序,不使用循环

    这里我们将看到如何编写一个 C 程序,可以在不使用任何命令的情况下打印从 1 到 100 的数字一种循环。 这个问题可以使用递归来解决。我们将创建一个函数,该函数将被调用递归地。我们知道,递归函数基本上有两个部分。基本情况和递归调用等操作。在此函数中,基本情况是参数 n 大于 1。直到达到 1 为止…

    2025年12月17日
    000
  • 使用递归从已排序的链表中删除重复项

    链表是连接在一起的元素序列。每个列表都有一个头和一系列节点,每个节点都有当前节点的数据并链接到下一个节点。链表的基本操作是插入、删除、查找和删除。 从排序链表中删除重复项 删除节点的一​​种方法是使用递归。其思想是将每个节点与其相邻节点进行比较,并删除它们相等的重复节点。 我们的递归调用将返回到下一…

    2025年12月17日
    000
  • 高级主定理用于分治递归

    分而治之 是一种基于递归地将问题分解为多个相似类型的子问题,并且这些子问题可以很容易地解决的算法。 示例 让我们举一个例子来更深入地了解分而治之的技巧 – function recursive(input x size n) if(n < k) Divide the input i…

    2025年12月17日
    000
  • 递归函数在C++中进行子串搜索

    给定两个字符串 Str 和 subStr 作为输入。目标是确定 subStr 中存在的文本是否作为子字符串存在于 Str 中。如果整个 X 在 Y 中至少出现一次,则字符串 X 称为 Y 的子串。我们将使用递归方法来执行此操作。 例如 输入− Str = “tutorialspoint” subSt…

    2025年12月17日
    000
  • 递归程序打印所有小于N的仅由数字1或3组成的数字

    We are given an integer variable as N storing the positive integer type value. The task is to recursively print all the numbers less than given value …

    2025年12月17日
    000
  • 将数组表示的数字加1(递归方法)

    给定一个数组,该数组是由非负数字表示的数字的集合,将数字加1(增加由数字表示的数字)。数字存储方式是最高位数字是数组的第一个元素。 要将数字加1到由数字表示的数字 从数组末尾开始,加法意味着将最后一个数字4舍入为5。 如果最后一个元素是9,则将其变为0并进位=1。 对于下一次迭代,检查进位,如果加到…

    2025年12月17日
    000
  • 二分搜索(递归和迭代)在C程序中的实现

    二分搜索是一种用于在排序数组中查找元素(目标值)位置的搜索算法。在应用二分搜索之前,数组应该被排序。 二分搜索也被称为对数搜索、二分查找、半区间搜索。 工作原理 二分搜索算法通过将要搜索的元素与数组的中间元素进行比较,并根据此比较结果执行所需的过程。 情况1 – 元素 = 中间值,找到元…

    2025年12月17日
    000
  • C#开发者如何学习算法?精选50个C#必会算法题与代码实现

    掌握基础排序、查找、递归、字符串数组操作及排列组合,是C#算法入门的关键。从冒泡排序建立编程思维,到快速排序理解分治;通过线性与二分查找熟悉数据定位技巧;利用递归解决阶乘、斐波那契等重复子问题;练习字符串反转、回文判断和两数之和提升日常编码能力;最后通过DFS与回溯生成全排列,培养深度搜索思维。每个…

    2025年12月17日
    000
  • c语言中冒泡法啥意思

    冒泡排序是一种简单的排序算法,原理是将相邻元素进行比较和交换,重复此步骤直至所有元素按序排列。其时间复杂度为O(n^2),空间复杂度为O(1)。它适用于小数据集,但对大数据集效率不高。 C语言中冒泡排序概述 冒泡排序是一种简单的排序算法,用于将数组中的元素按升序或降序排列。 算法原理 冒泡排序算法的…

    2025年12月17日
    000
  • c语言如何排序输出

    C语言排序输出的方法有两种:使用qsort函数或手动实现排序算法。qsort函数基于快速排序算法,语法为qsort(void base, size_t nmemb, size_t size, int (compar)(const void , const void ));手动实现排序算法包括冒泡排序…

    2025年12月17日
    000
  • c语言排序怎么实现

    C 语言中实现排序可以使用多种算法,包括:冒泡排序:比较相邻元素,将较小的元素向前移动。选择排序:找到无序序列中的最小元素,并与第一个元素交换位置。插入排序:将元素逐个插入到已有序序列中。归并排序:分治排序,合并排序后的左右两半。快速排序:选取基准元素,将比基准元素小的元素放在左边,大的放在右边。 …

    2025年12月17日
    000
  • 什么是c语言算法

    C 语言算法是一系列定义明确的步骤,用于解决编程问题,通常包括输入、输出、步骤、控制流和数据结构。算法类型包括排序、搜索、动态规划和贪婪算法。使用算法的好处有高效性、可维护性、通用性和可重用性。设计算法时应考虑清晰度、效率、可扩展性和鲁棒性。 什么是 C 语言算法? 在 C 语言中,算法是一系列定义…

    2025年12月17日
    000
  • 如何实现C#中的冒泡排序算法

    如何实现C#中的冒泡排序算法 冒泡排序是一种简单但有效的排序算法,它通过多次比较相邻的元素并交换位置来排列一个数组。在本文中,我们将介绍如何使用C#语言实现冒泡排序算法,并提供具体的代码示例。 首先,让我们了解一下冒泡排序的基本原理。算法从数组的第一个元素开始,与下一个元素进行比较。如果当前元素比下…

    2025年12月17日
    000
  • 三分钟带你了解选择排序和冒泡排序的用法

    今天给大家分享一些关于C语言的算法,选择排序和冒泡排序。 对于选择排序,首先理解排序的思想。给定一个数组,这种思想首先假定数组的首元素为最大或者最小的。此时就要利用3个变量表示元素的下标。 一个表示当前,一个表示找到的最大或者最小的下标,一个用于存放每次循环中最大值的下标。在掌握了程序的基本思想之后…

    2025年12月17日
    000
  • c语言数组冒泡排序是如何实现的?

    方法:1、选定一个数,利用for循环将该数字与另一个数比较;2、用if语句比较两数的大小,根据比较结果进行元素的交换,两两比较,以实现排序。 c语言冒泡排序的方法: 1、先逐个筛选数组中的每个元素 2、再比较每相邻的两个元素 立即学习“C语言免费学习笔记(深入)”; 3、根据比较结果进行元素的交换,…

    2025年12月17日 好文分享
    000
  • c语言允许函数的递归调用吗

    c语言允许函数的递归调用吗 允许。C语言中的函数直接或间接调用自己的过程叫递归。 一、递归的两个必要条件 1、存在限制条件,当满足这个条件时,递归便不再继续。 2、每次递归调用之后越来越接近这个限制条件。 立即学习“C语言免费学习笔记(深入)”; 推荐学习:c语言视频教程 二、经典的递归题目-求第n…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信