C语言实现的冒泡排序算法的示例程序

news/2024/7/8 3:01:00 标签: 算法, c语言, 排序算法

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端。

下面是一个使用C语言实现的冒泡排序算法的示例程序:

#include <stdio.h>

// 冒泡排序函数
void bubbleSort(int arr[], int n) {
    int i, j, temp;
    for (i = 0; i < n-1; i++) {
        // 最后的i个元素已经排好序,不需要再比较
        for (j = 0; j < n-i-1; j++) {
            if (arr[j] > arr[j+1]) {
                // 交换arr[j]和arr[j+1]
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

// 打印数组函数
void printArray(int arr[], int size) {
    int i;
    for (i=0; i < size; i++)
        printf("%d ", arr[i]);
    printf("\n");
}

// 主函数,用于测试冒泡排序
int main() {
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr)/sizeof(arr[0]);
    bubbleSort(arr, n);
    printf("Sorted array: \n");
    printArray(arr, n);
    return 0;
}

在这个程序中,bubbleSort 函数负责执行冒泡排序算法,它接受一个整数数组 arr 和数组的大小 n 作为参数。printArray 函数用于打印数组的内容,方便我们查看排序结果。main 函数中,我们定义了一个待排序的数组 arr,并调用 bubbleSort 函数对其进行排序,最后通过 printArray 函数打印排序后的数组。

注意,冒泡排序的时间复杂度为 O(n^2),在数据规模较大时效率较低,因此在实际应用中,对于大规模数据的排序,通常会选择更高效的排序算法,如快速排序、归并排序等。


http://www.niftyadmin.cn/n/5536229.html

相关文章

Kotlin_作用域函数let/also/with/run/apply

文章目录 1.let2.also3.with4.run5.apply6.总结对比 1.let 仅当调用对象不为 null 时执行 name?.let {println("name: $it")it.fun1() // 不需要: 判空 或 ?.it.fun2()it.fun3() } // 最后一行为返回值2.also 跟 let 类似&#xff0c;但返回的是传入对象本身 v…

windows USB 设备驱动开发- 选择备用设备

可以选择接口请求以激活 USB 接口中的备用设置。 客户端驱动程序必须在选择 USB 配置后发出此请求。 默认情况下&#xff0c;选择配置还会激活该配置中每个接口中的第一个备用设置。 每个 USB 配置必须支持一个或多个多个 USB 接口。 每个接口都会公开一个或多个终结点&#x…

暄桐好作业之《临吴昌硕〈萧斋清供图〉》

暄桐是一间传统美学教育教室&#xff0c;创办于2011年&#xff0c;林曦是创办人和授课老师&#xff0c;教授以书法为主的传统文化和技艺&#xff0c;皆在以书法为起点&#xff0c;亲近中国传统之美&#xff0c;以实践和所得&#xff0c;滋养当下生活。      其中“暄桐好作…

简历–求职信–通用

每个毕业生的简历首页大概都会是一封求职信。如果说对求职者的简历正文我们只是浮光掠影看上几眼的话&#xff0c;那么对求职信&#xff0c;简直连浮光掠影都称不上。说实话&#xff0c;我在看求职者简历的时候一般会把这一页翻过去&#xff0c;很少去看。为什么呢&#xff1f;…

探索视频合成新境界:加快加长视频生成,PAB加速与ExVideo延展技术介绍

一、摘要 随着人工智能技术的不断进步&#xff0c;视频合成领域正迎来前所未有的发展机遇。本文介绍近期两项视频生成方向的创新技术&#xff1a;PAB&#xff08;Pyramid Attention Broadcast&#xff09;和ExVideo。这两篇文章合在一起主要介绍如何提升视频生成的速度与长度&a…

opencv实现人脸检测功能----20240704

opencv实现人脸检测 早在 2017 年 8 月,OpenCV 3.3 正式发布,带来了高度改进的“深度神经网络”(dnn)模块。 该模块支持多种深度学习框架,包括 Caffe、TensorFlow 和 Torch/PyTorch。OpenCV 的官方版本中包含了一个更准确、基于深度学习的人脸检测器, 链接:基于深度学习…

基于单片机的出租车计价器实验教学案例设计

摘 要 为了让学生加深单片机的理解&#xff0c;加强学生的单片机技术应用、实践动手、创新能力的培养&#xff0c;根据单片机课程设计教学情况精心设计了基于单片机的出租车计价器实验教学案例。本教学案例的基本原理是速度的检测&#xff0c;里程、价格的计算和显示。学生通…

工程安全监测仪器振弦采集仪提升工程质量和安全水平

工程安全监测仪器振弦采集仪提升工程质量和安全水平 振弦采集仪是一种重要的工程安全监测仪器&#xff0c;可以用来监测建筑物、桥梁、隧道等工程结构的振动情况。它通过测量结构物的振动频率和振幅&#xff0c;可以提供关键的数据用于评估结构的安全性和稳定性。振弦采集仪在…