C 程序:递归冒泡排序算法
冒泡排序是最简单的排序算法之一,用于通过比较相邻元素对数据进行排序。所有元素都分阶段比较。第一阶段将最大值放在末尾,第二阶段将第二大元素放在倒数第二个位置,依此类推,直到对完整列表进行排序。
冒泡排序是最简单的排序算法之一,用于通过比较相邻元素对数据进行排序。所有元素都分阶段比较。第一阶段将最大值放在末尾,第二阶段将第二大元素放在倒数第二个位置,依此类推,直到对完整列表进行排序。
气泡排序算法
int arr[5]= { 5,4,2,1,3 };
int i, j ;
从索引 i=0 遍历到 i<数组大小
从索引 j=0 遍历到数组大小 - i - 1
如果 arr[i]>arr[j] 将 arr[i] 替换为 arr[j]
结束
递归冒泡排序
如果数组长度为 1,则返回
遍历数组一次,将最大的元素固定在末尾
递归地对数组的其余部分执行步骤 2(最后一个元素除外)
例子:
输入 − arr[] = { 5,7,2,3,1,4 };长度=6
输出 − 排序数组:1 2 3 4 5 7
解释 −
First Pass
5 7 2 3 1 4 → swap → 5 2 7 3 1 4
5 2 7 3 1 4 → swap → 5 2 3 7 1 4
5 2 3 7 1 4 → swap → 5 2 3 1 7 4
5 2 3 1 7 4 → swap → 5 2 3 1 4 7
Second Pass
5 2 3 1 4 7 → swap → 2 5 3 1 4 7
2 5 3 1 4 7 → swap → 2 3 5 1 4 7
2 3 5 1 4 7 → swap → 2 3 1 5 4 7
2 3 1 5 4 7 → swap → 2 3 1 4 5 7
Third Pass
2 3 1 4 5 7 → swap → 2 1 3 4 5 7
2 1 3 4 5 7 no swap
Fourth Pass
2 1 3 4 5 7 → swap → 1 2 3 4 5 7
1 2 3 4 5 7 no swap in further iterations
输入 − arr[] = { 1, 2, 3, 3, 2 };
输出 − 排序数组:1 2 2 3 3
解释 −
First Pass
1 2 3 3 2 → swap → 1 2 3 2 3
1 2 3 2 3 → swap → 1 2 2 3 3
1 2 2 3 3 no swap in further iterations
Second Pass
1 2 2 3 3 no swap in further iterations
以下程序中使用的方法如下
在冒泡排序的递归方法中,基本情况是数组长度 = 1。否则,使用单个 for 循环遍历数组,并相应地交换元素。
将输入数组 Arr[] 和长度作为其中的元素数。
函数 recurbublSort(int arr[], int len) 获取数组及其长度,并使用冒泡排序递归对数组进行排序。
采用可变温度。
如果数组长度为 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 <stdio.h>
void recurbublSort(int arr[], int len){
int temp;
if (len == 1){
return;
}
for (int i=0; i<len-1; i++){
if (arr[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

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)