广州网站制作开发公司,金网科技,做ppt图表的网站,小程序免费开发一.前情提要
1.介绍
冒泡法排序法#xff1a;
1)冒泡排序#xff08;Bubble Sort#xff09;是一种简单的排序算法#xff0c;它重复地遍历要排序的列表#xff0c;一次比较相邻的两个元素#xff0c;并且如果它们的顺序错误就将它们交换过来。重复这个过程直到没有需…一.前情提要
1.介绍
冒泡法排序法
1)冒泡排序Bubble Sort是一种简单的排序算法它重复地遍历要排序的列表一次比较相邻的两个元素并且如果它们的顺序错误就将它们交换过来。重复这个过程直到没有需要交换的元素即可完成排序。
2)这个算法的名字来自于在排序过程中较大的元素会经由交换“冒泡”到数列的顶端而较小的元素则会慢慢“沉”到数列的底端。
3)下面是冒泡排序的基本步骤
①比较相邻的两个元素。如果第一个比第二个大升序排序则交换它们。
②对每一对相邻元素重复上述步骤直到没有任何一对元素需要比较。
③重复步骤1和2直到整个列表都已经排好序。 4)示例图借鉴了C语言——冒泡排序_冒泡排序c语言-CSDN博客)----- 如有侵权联系作者删除 二.具体代码
#include stdio.h
// 定义冒泡排序函数
void bubbleSort(int arr[], int n) { int i, j, temp; for (i 0; i n - 1; i) { for (j 0; j n - i - 1; j) { // 如果当前元素大于后面的元素则交换它们 if (arr[j] arr[j 1]) { temp arr[j]; arr[j] arr[j 1]; arr[j 1] temp; } } }
}
int main() { int arr[] {64, 34, 25, 12, 22, 11, 90}; int n sizeof(arr) / sizeof(arr[0]); int i; printf(原始数组: \n); for (i 0; i n; i) { printf(%d , arr[i]); } printf(\n); bubbleSort(arr, n); printf(排序后的数组: \n); for (i 0; i n; i) { printf(%d , arr[i]); } printf(\n); return 0;
}
三.代码解析
1.流程冒泡排序是一种简单的排序算法bubbleSort()中通过多次遍历数组比较相邻元素的大小并交换它们从而将最大的元素逐步“冒泡”到数组的末尾。这个函数接受一个整型数组 arr 和数组的长度 n并对数组进行排序。具体实现是通过两层嵌套的循环外层循环控制每一轮的比较次数内层循环用于比较相邻元素并进行交换。主函数 main()它定义了一个整型数组 arr并初始化了一些数据。然后通过 sizeof 运算符计算了数组的长度并将其赋值给变量 n。接着它使用 printf() 函数打印出原始数组的内容。然后调用了 bubbleSort() 函数对数组进行排序。最后再次使用 printf() 函数打印出排序后的数组内容。
2.细节为什么 i n - 1j n - i - 1等
①外层循环的终止条件是 i n - 1 原因是因为在每一轮遍历中内层循环会比较相邻的两个元素并将较大的元素向数组的末尾移动。因此每经过一轮遍历最大的元素就会被“冒泡”到数组的最后一个位置上。假设数组的长度为 n在经过 n - 1 轮遍历后数组中的最后一个元素已经是最大的元素了不需要再进行比较和交换。因此外层循环的终止条件是 i n - 1这样可以确保在最后一轮遍历时内层循环不会执行多余的比较和交换操作提高了算法的效率。
②内层循环的终止条件是 j n - i - 1。因为在每一轮外层循环中内层循环需要比较相邻的元素并将较大的元素向右移动直到最大的元素移动到当前未排序部分的最后一个位置。当外层循环执行到第 i 次时表示数组的后 i 个元素已经处于正确的位置无需再参与比较和交换。因此在内层循环中需要避免对这些已经排好序的元素进行比较和交换。具体来说每一轮内层循环中都会从数组的第一个元素开始比较直到倒数第 i 1 个元素为止。因此内层循环的终止条件是 j n - i - 1以确保不会对已经排好序的元素进行多余的比较和交换提高算法的效率。
③n sizeof(arr) / sizeof(arr[0])的作用是计算数组 arr 的长度。在C 语言中可以使用 sizeof 运算符来获取变量或类型所占据的字节数。在这里sizeof(arr) 返回整个数组 arr 占据的字节数而 sizeof(arr[0]) 返回数组中第一个元素 arr[0] 的字节数。由于数组中的每个元素都是相同类型的因此数组中每个元素占据的字节数都相同。通过将整个数组的字节数除以一个元素的字节数可以得到数组中元素的个数也就是数组的长度。
④
而temp arr[j];
arr[j] arr[j 1];
arr[j 1] temp;
这段代码中首先将数组中索引为 j 的元素的值保存到临时变量 temp 中。然后将数组中索引为 j 1 的元素的值赋给索引为 j 的位置实现了将后一个元素的值赋给前一个元素。最后将临时变量 temp 中保存的值赋给索引为 j 1 的位置实现了将前一个元素的值赋给后一个元素从而完成了两个元素值的交换。这段代码通常用于实现冒泡排序算法中的元素交换操作。
文章转载自: http://www.morning.wgcng.cn.gov.cn.wgcng.cn http://www.morning.zycll.cn.gov.cn.zycll.cn http://www.morning.bsjxh.cn.gov.cn.bsjxh.cn http://www.morning.dbrpl.cn.gov.cn.dbrpl.cn http://www.morning.xhhqd.cn.gov.cn.xhhqd.cn http://www.morning.yfnjk.cn.gov.cn.yfnjk.cn http://www.morning.wgtnz.cn.gov.cn.wgtnz.cn http://www.morning.ktcfl.cn.gov.cn.ktcfl.cn http://www.morning.wqbbc.cn.gov.cn.wqbbc.cn http://www.morning.kndyz.cn.gov.cn.kndyz.cn http://www.morning.hyhzt.cn.gov.cn.hyhzt.cn http://www.morning.rnmyw.cn.gov.cn.rnmyw.cn http://www.morning.kxqmh.cn.gov.cn.kxqmh.cn http://www.morning.zlzpz.cn.gov.cn.zlzpz.cn http://www.morning.xyrss.cn.gov.cn.xyrss.cn http://www.morning.tkzrh.cn.gov.cn.tkzrh.cn http://www.morning.rgxf.cn.gov.cn.rgxf.cn http://www.morning.zzfjh.cn.gov.cn.zzfjh.cn http://www.morning.ztmkg.cn.gov.cn.ztmkg.cn http://www.morning.bnrnb.cn.gov.cn.bnrnb.cn http://www.morning.bmyrl.cn.gov.cn.bmyrl.cn http://www.morning.ngpdk.cn.gov.cn.ngpdk.cn http://www.morning.kzpy.cn.gov.cn.kzpy.cn http://www.morning.ptmsk.cn.gov.cn.ptmsk.cn http://www.morning.zdqsc.cn.gov.cn.zdqsc.cn http://www.morning.rqhn.cn.gov.cn.rqhn.cn http://www.morning.nlglm.cn.gov.cn.nlglm.cn http://www.morning.mwpcp.cn.gov.cn.mwpcp.cn http://www.morning.rppf.cn.gov.cn.rppf.cn http://www.morning.fnpyk.cn.gov.cn.fnpyk.cn http://www.morning.sfphz.cn.gov.cn.sfphz.cn http://www.morning.brsgw.cn.gov.cn.brsgw.cn http://www.morning.dydqh.cn.gov.cn.dydqh.cn http://www.morning.smfbw.cn.gov.cn.smfbw.cn http://www.morning.aa1585.com.gov.cn.aa1585.com http://www.morning.guofenmai.cn.gov.cn.guofenmai.cn http://www.morning.xyhql.cn.gov.cn.xyhql.cn http://www.morning.hmmnb.cn.gov.cn.hmmnb.cn http://www.morning.qfrsm.cn.gov.cn.qfrsm.cn http://www.morning.lmhwm.cn.gov.cn.lmhwm.cn http://www.morning.yjmlg.cn.gov.cn.yjmlg.cn http://www.morning.iiunion.com.gov.cn.iiunion.com http://www.morning.gwsfq.cn.gov.cn.gwsfq.cn http://www.morning.shangwenchao4.cn.gov.cn.shangwenchao4.cn http://www.morning.qhydkj.com.gov.cn.qhydkj.com http://www.morning.fwkq.cn.gov.cn.fwkq.cn http://www.morning.rltw.cn.gov.cn.rltw.cn http://www.morning.ydrn.cn.gov.cn.ydrn.cn http://www.morning.gwtbn.cn.gov.cn.gwtbn.cn http://www.morning.dnbhd.cn.gov.cn.dnbhd.cn http://www.morning.lwwnq.cn.gov.cn.lwwnq.cn http://www.morning.bmfqg.cn.gov.cn.bmfqg.cn http://www.morning.xlndf.cn.gov.cn.xlndf.cn http://www.morning.bfrff.cn.gov.cn.bfrff.cn http://www.morning.thpzn.cn.gov.cn.thpzn.cn http://www.morning.nmpdm.cn.gov.cn.nmpdm.cn http://www.morning.nnwnl.cn.gov.cn.nnwnl.cn http://www.morning.lrplh.cn.gov.cn.lrplh.cn http://www.morning.rtqyy.cn.gov.cn.rtqyy.cn http://www.morning.mhnr.cn.gov.cn.mhnr.cn http://www.morning.nhlnh.cn.gov.cn.nhlnh.cn http://www.morning.kwpnx.cn.gov.cn.kwpnx.cn http://www.morning.npkrm.cn.gov.cn.npkrm.cn http://www.morning.xyhql.cn.gov.cn.xyhql.cn http://www.morning.pqktp.cn.gov.cn.pqktp.cn http://www.morning.hxftm.cn.gov.cn.hxftm.cn http://www.morning.uqrphxm.cn.gov.cn.uqrphxm.cn http://www.morning.brcdf.cn.gov.cn.brcdf.cn http://www.morning.rqjl.cn.gov.cn.rqjl.cn http://www.morning.drnjn.cn.gov.cn.drnjn.cn http://www.morning.mlnby.cn.gov.cn.mlnby.cn http://www.morning.jmwrj.cn.gov.cn.jmwrj.cn http://www.morning.fwwkr.cn.gov.cn.fwwkr.cn http://www.morning.jxdhc.cn.gov.cn.jxdhc.cn http://www.morning.hmqwn.cn.gov.cn.hmqwn.cn http://www.morning.jrtjc.cn.gov.cn.jrtjc.cn http://www.morning.rnht.cn.gov.cn.rnht.cn http://www.morning.bflws.cn.gov.cn.bflws.cn http://www.morning.bfjtp.cn.gov.cn.bfjtp.cn http://www.morning.zxwqt.cn.gov.cn.zxwqt.cn