首页 > 其他分享 >数据结构学习笔记-冒泡排序

数据结构学习笔记-冒泡排序

时间:2024-05-30 12:04:11浏览次数:14  
标签:arr 数据结构 int 元素 笔记 ++ 冒泡排序 排序

冒泡排序的算法设计与分析

问题描述:设计并分析冒泡排序算法

【算法设计思想】

  1. 遍历数组,从第一个元素到倒数第二个元素(因为最后一个元素不需要再比较,它已经是最大的了)。
  2. 在每次遍历过程中,再次遍历未排序部分的元素(从第一个到当前未排序部分的末尾),比较相邻的两个元素,如果顺序不正确,则交换它们的位置。
  3. 经过一轮完整的遍历后,最大的元素会“冒泡”到数组的末尾,因此,未排序部分的长度减 1。
  4. 重复以上步骤,直到未排序部分的长度为 1,此时整个数组已经排序完成。

【算法描述】

// 冒泡排序函数
void bubbleSort(int arr[], int n) {
    int i, j;
    for (i = 0; i < n-1; i++) {
        // 每次循环都会将当前未排序部分的最大值“冒泡”到末尾
        for (j = 0; j < n-i-1; j++) {
            // 如果当前元素比下一个元素大,则交换它们
            if (arr[j] > arr[j+1]) {
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

【完整的测试程序】

#include <stdio.h>

// 冒泡排序函数
void bubbleSort(int arr[], int n) {
    int i, j;
    for (i = 0; i < n-1; i++) {
        // 每次循环都会将当前未排序部分的最大值“冒泡”到末尾
        for (j = 0; j < n-i-1; j++) {
            // 如果当前元素比下一个元素大,则交换它们
            if (arr[j] > arr[j+1]) {
                int 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]);
    printf("排序前的数组: \n");
    printArray(arr, n);
    bubbleSort(arr, n);
    printf("排序后的数组: \n");
    printArray(arr, n);
    return 0;
}

标签:arr,数据结构,int,元素,笔记,++,冒泡排序,排序
From: https://www.cnblogs.com/zeta186012/p/18220734

相关文章

  • 算法课程笔记——快速幂
    算法课程笔记——快速幂......
  • Zynq学习笔记--AXI4-Stream 图像数据从仿真输出到图像文件
    目录1.简介2.构建工程2.1Vivado工程2.2TestBench代码2.3关键代码分析3. VPG BackgroundPatternID(0x0020)Register4.总结1.简介使用SystemVerilog将AXI4-Stream图像数据从仿真输出到图像文件(PPM)。用到的函数包括$fopen、$fwrite和$fclose......
  • 深度学习笔记_卷积神经网络CNN
    卷积层实际上是内积,就是把一个图片分成nnn个区域,分别对每个区域用fliter做内积(对应位置相乘,最后求和)池化层存在意义卷积层提取出的特征太多了,要用池化......
  • 视觉slam笔记_去畸变理论与流程
    去畸变理论(具体内容见视觉slam14讲P97,且由于空间受限,本文推导均不放图片,有需要去查看电子书或实体书)首先,把一会要用到的量先列出来现实世界中PPP点(......
  • vscode技巧笔记3-调试编译
    1.概述vscode作为一个编辑器,同样也是开发工具,本文介绍运行调试环境2.通用配置vscode支持多种语言,这里介绍下通用配置,c和python(我自己用的)作为章节介绍2.1.运行相关界面2.1.1.语言解释器(languagemode)和解释器vscode会自动识别文件的后缀名然后进入对应的语言模式,如果是......
  • Git使用笔记
    Git使用笔记什么是git,git介绍和svc对比https://fishc.com.cn/forum.php?mod=viewthread&tid=71107&extra=page%3D1%26filter%3Dtypeid%26typeid%3D599 https://www.liaoxuefeng.com/wiki/896043488029600/896067008724000 git安装(win)下载安装包https://git-scm.com/downl......
  • 07-图4 哈利·波特的考试(浙大数据结构PTA习题)
    07-图4哈利·波特的考试        分数25        作者 陈越        单位 浙江大学哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化......
  • C语言实现排序之冒泡排序算法
    1.代码#include<stdlib.h>#include<stdio.h>#include<time.h>//函数声明//创建并生成一个包含随机数的数组,数组大小由参数size指定int*create_and_generate_random_array(intsize);//打印数组内容,参数array是数组指针,size是数组大小voidprint_array(int*arr......
  • 前端学习笔记——JavaScript基础语言的学习(三)
    作者简介:大家好,本人刚专升本上岸,是个前端小菜鸟。每日都会虚心的学习。有什么写的不好的,大家都可以帮我提出来。我跟着pink老师学的!!!强烈推荐:https://www.bilibili.com/video/BV14J4114768p=1&vd_source=38cea56ff3dcca4556d2d0f0f2c18c0c1,类型转换:把一种数据类型的变量转换成......
  • 前端学习笔记——JavaScript基础语言的学习(二)
    作者简介:大家好,本人刚专升本上岸,是个前端小菜鸟。每日都会虚心的学习。有什么写的不好的,大家都可以帮我提出来。我跟着pink老师学的!!!强烈推荐:https://www.bilibili.com/video/BV14J4114768p=1&vd_source=38cea56ff3dcca4556d2d0f0f2c18c0c1.数组的基本使用2.常量的基本使用......