排序算法(二)-冒泡排序(Bubble Sort)

本文介绍了一种使用C语言实现的冒泡排序算法,通过递归和非递归两种方式详细展示了如何对整型数组进行升序排列,并提供了完整的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工作原理:一次比较两个元素,将顺序错误的纠正

C语言实现:

1.模块化

#include <stdio.h>

//定义常量数组长度
#define MAX_SIZE 6
//&符号在函数形式参数上代表实际参数的值会随函数操作改变而改变
void sort(int[],int &);

void print_list(int[]);

void swap(int &,int &);

int main(int argc, const char * argv[])
{
    //次数
    int n = 0;
    //定义数组
    int arr[MAX_SIZE]={1,10,1,3,6,7};
    sort(arr,n);
    print_list(arr);
    return 0;
}


/**
 * Sort 比较排序,从小到大
 * @param array list[] 需要排序的数组
 * @param int n 执行排序的次数
 */
void sort(int list[],int &n)
{
    //如果次数大于数组长度,则结束递归
    if (n>=MAX_SIZE-1) {
        return;
    }
    int index;
    for (index = 0; index<MAX_SIZE-n; ++index) {
        if (list[index]>list[index+1]) {
            //交换数值
            swap(list[index], list[index+1]);
        }
    }
    ++n;
    //递归操作
    sort(list, n);
}

//以下是公共方法

/**
 * Print_list 遍历数组
 * @param array list[] 需要遍历的数组
 */
void print_list(int list[])
{
    for (int i=0; i<MAX_SIZE; ++i) {
        printf("a[%d]:%d ",i,list[i]);
    }
}

void swap(int &a,int &b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;
}

2.简单版

#include <stdio.h>

//定义常量数组长度
#define MAX_SIZE 6
#define SWAP(x, y, t)  ((t) = (x), (x) = (y), (y) = (t))
//&符号在函数形式参数上代表实际参数的值会随函数操作改变而改变

int main(int argc, const char * argv[])
{
    //次数
    int n = 0,temp;
    //定义数组
    int arr[MAX_SIZE]={1,10,1,3,6,7};
    for(n;n<MAX_SIZE-1;++n){
        for (int index = 0; index<MAX_SIZE-n; ++index) {
            if (arr[index]>arr[index+1]) {
                //交换数值
                SWAP(arr[index], arr[index+1],temp);
            }
        }
        
    }
    for (int i=0; i<MAX_SIZE; ++i) {
        printf("a[%d]:%d ",i,arr[i]);
    }
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alex-Leung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值