冒泡排序数据结构实验报告

实验目的:

  1. 理解冒泡排序算法的原理和基本思路。
  2. 熟悉冒泡排序在实际应用中的场景和优化方法。

实验内容(实验题目与说明)

编写一个双向冒泡排序算法,即在排序过程中以交替的正、反两个方向进行遍历。若第一趟把关键字最大的记录放到最末尾,则第二趟把关键字最小的记录放到最前端,如此反复进行之。

三、算法设计(核心代码或全部代码)

#include <stdio.h>

#define max 10

void bubbleSort(int arr\[\], int size) {

int i, j;

for (i = 0; i < size - 1; i++) { // 控制轮数

for (j = 0; j < size - i - 1; j++) { //控制每轮比较次数

if (arrj > arrj + 1) { // 如果前一个数大于后一个数,则交换它们的位置

int temp = arrj;

arrj = arrj + 1;

arrj + 1 = temp;

}

}

}

}

int main() {

int arrmax, i;

// 输入数组元素

printf("输入 %d 个数: ", max);

for (i = 0; i < max; i++) {

scanf("%d", &arri);

}

// 排序

bubbleSort(arr, max);

// 输出排序后的数组

printf("排序后的结果: ");

for (i = 0; i < max; i++) {

printf("%d ", arri);

}

return 0;

}

运行与测试(测试数据和实验结果分析

程序接收用户输入的10个整数,并将它们存储在数组 arr 中。然后,通过调用冒泡排序算法对这些整数进行排序。从数组的第一个元素开始,逐个比较相邻的两个元素的大小。如果前一个元素大于后一个元素,则交换它们的位置。通过这样的比较和交换操作,每一轮都会将当前最大的元素移动到数组的末尾。

总结与心得:

冒泡排序是交换排序中一种简单的排序方法。其基本思想是对所有相邻的关键字值进行比效,如果是逆顺(aj>aj+1),则将其交换,最终达到排序的目的。双向冒泡排序算法是对传统冒泡排序算法的一种改进,通过同时从左到右和从右到左两个方向进行比较和交换,减少了排序的轮数。在开始编写代码之前,我首先对双向冒泡排序算法的原理进行了深入的学习和理解。这包括了如何确定左右边界、两个方向的比较和交换操作等。

相关推荐
一次旅行1 小时前
RLHF全链路深度解析:Reward Model数学推导+PPO完整实战,对比GRPO轻量化方案
人工智能·算法·机器学习
Wang's Blog1 小时前
AI Agent白手起家29: Few Shot 提示词工程实战
人工智能·算法
June`1 小时前
warp shuffle指令
c++·人工智能·算法·cuda
geovindu1 小时前
go:Bit Operation Algorithm
开发语言·后端·算法·golang·位运算法
Wang's Blog2 小时前
AI Agent白手起家31: 根据语义相似度动态选择 Few Shot 示例
人工智能·算法
白白白小纯3 小时前
每日算法day3—回文链表,链表分割
c语言·数据结构·算法·leetcode
手写码匠3 小时前
华为云Flexus+DeepSeek征文|Dify 构建企业级联网搜索 Agent:查询改写、多源检索与引用溯源实战
人工智能·深度学习·算法·aigc
tudousisi2223 小时前
B3928 [GESP202312 四级] 田忌赛马
算法
七夜zippoe3 小时前
DolphinDB 能耗统计分析实战:报表生成、同比环比与定额对比
人工智能·算法·dolphindb·报表生成·能耗统计·定额对比
为啥全要学3 小时前
在大语言模型上使用 PPO 算法
人工智能·算法·语言模型