当前位置: 首页 > news >正文

南京做网站南京乐识最优网易企业邮箱

南京做网站南京乐识最优,网易企业邮箱,微信小程序开发模板网站,深圳网站建设简介一.前情提要 1.介绍 冒泡法排序法: 1)冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的列表,一次比较相邻的两个元素,并且如果它们的顺序错误就将它们交换过来。重复这个过程直到没有需…

一.前情提要

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 - 1,j < 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.shuangfujiaoyu.com/news/35609.html

相关文章:

  • 接单子做网站词产品推广计划怎么写
  • 简述网站建设的具体步骤域名查询官网
  • 郑州市网站开发天津seo技术教程
  • dw 8做的网站怎么上传产品免费推广网站有哪些
  • 九江seo公司排名优化网站seo排名
  • 网站上的广告怎么做优化网站seo方案
  • 自己做的网站不显示图片整合营销传播成功案例
  • 武汉教育网站制作公司seo教学网站
  • wordpress 响应式 主题南京seo优化推广
  • 建什么类型个人网站网站建设的重要性
  • 百度app免费下载安装沈阳专业seo关键词优化
  • 公司及企业如何建立自己的购物网站线上广告
  • 建立团购网站摘抄一篇新闻
  • 做t恤网站 一件也可以做邳州网站开发
  • 网站优化方案怎么写怎样做网站平台
  • 淄博学校网站建设定制今日重大财经新闻
  • 广州公司网站建设成都互联网公司排名
  • 微信网站建设模板百度seo搜索引擎优化
  • 谷歌收录wordpress企业网站优化报告
  • 前端是wordpress做的吗seo优化神器
  • 做名片素材网站德兴网站seo
  • wordpress产品列表插件深圳市seo点击排名软件价格
  • 北京朝阳做网站优化推广网站怎么做
  • wordpress主题阿里百长沙百度推广排名优化
  • Ie8网站后台编辑文章seo网站推广首页排名
  • 宿州企业官方网站建设湖南最新消息今天
  • 下载类网站模板域名查询网址
  • 江西赣州网站建设手机网站关键词快速排名
  • 福州综合网站建设企业网站营销的典型案例
  • 公司搭建一个网站软文兼职