十二、数组(2)

1.冒泡排序数组(升序)

冒泡排序:将一个整型数组排序(升序)

例:

10        9        8        7        6        5        4        3        2        1

9          10      8        7        6        5        4        3        2        1

9           8       10      7        6        5        4        3        2        1

......

9           8        7       6        5        4        3        2        1        10 //一次排序最终结果

10个元素,9趟比较

推论:

n个元素,一共n-1趟比较。

                第1趟,比较n-1次

                第2趟,比较n-2次

                ......

                第m趟,比较n-m次

                           ......

                第n-1趟,比较1次

例:for(i=0;i<sz-1;i++)//n-1趟

       {

             for(j=0;j<sz-1-i;j++)//每趟n-m次,i = m -1

        }

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
//冒泡排序数组(升序)
void bubble_sort (int arr [],int sz)
{int i = 0;int j = 0;for(i=0;i<sz-1;i++){for(j=0;j<sz-1-i;j++){if(arr[j]>arr[j+1]){int tmp=arr[j];arr[j]=arr[j+1];arr[j+1]=tmp;}}}
}
int main()
{	int arr [] = {99,888,70,50,5,44,3,2,10,0};int i = 0;int sz = sizeof(arr)/sizeof(arr[0]);bubble_sort(arr,sz);for(i=0;i<sz;i++){printf("%d ",arr[i]);}return 0;
}

2.冒泡排序数组pro

如果某趟比较,无交换位置,则已有序,直接跳出。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
//冒泡排序数组pro
void bubble_sort (int* arr,int sz)
{int i = 0;int j = 0;for(i=0;i<sz-1;i++){int flag = 1;for(j=0;j<sz-1-i;j++){if(*(arr+j)>*(arr+j+1)){int tmp = *(arr+j);*(arr+j) = *(arr+j+1);*(arr+j+1) = tmp;flag = 0;}}if(flag==1){break;}}
}
int main()
{	int arr [] = {9,80,70,6,50,666,3,2,1,660};int i = 0;int sz = sizeof(arr)/sizeof(arr[0]);bubble_sort(arr,sz);for(i=0;i<sz;i++){printf("%d ",arr[i]);}return 0;
}

3.数组名的实质

数组作参数,在函数传参时,传的是数组首元素的地址。

实参:arr

形参:int arr [ ]         或者         int* arr

          下标访问                        arr++和解引用

           数组接收                        指针接收

数组名的实质是数组首元素的地址

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
//数组名的实质
int main()
{	int arr [] = {0,1,2,3,4,5,6,7,8,9};printf("%p\n",arr);printf("%p\n",&arr[0]);printf("%d\n",*arr);return 0;
}

4.数组名的例外

(1)sizeof(数组名)

数组名表示整个数组,计算的是整个数组的大小。

(2)&(数组名)

取出的是整个数组的地址,表示整个数组。

例:&arr 打印的是首元素的地址

       &arr+1 跳出整个数组的地址,打印的是数组末元素地址的下一个地址

例:一个数组10个元素:以int型为例

0        1        2        3        4        5        6        7        8        9        x(&arr+1)

整个数组占40个地址大小,首元素和末元素的首地址差36个地址大小。

打印只打印元素首地址

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
//数组名的例外
int main()
{	int arr [] = {0,1,2,3,4,5,6,7,8,9};printf("%d\n",sizeof(arr));printf("%p\n",arr);printf("%p\n",arr+1);printf("%p\n",&arr[0]);printf("%p\n",&arr[9]);printf("%d\n",*arr);printf("%p\n",&arr);printf("%p\n",&arr+1);return 0;
}

5.思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/48337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十四届蓝桥杯省赛C++C组C题【三国游戏】题解(AC)

解题思路 由于三种国家都有获胜的可能&#xff0c;所以我们需要分别枚举 X , Y , Z X,Y,Z X,Y,Z 获胜的情况。 设 X X X 获胜&#xff0c;那么对于第 i i i 个事件的贡献为 a [ i ] − ( b [ i ] c [ i ] ) a[i]-(b[i]c[i]) a[i]−(b[i]c[i])&#xff0c;根据贪心的策略…

【银河麒麟服务器操作系统】java进程oom现象分析及处理建议

了解银河麒麟操作系统更多全新产品&#xff0c;请点击访问麒麟软件产品专区&#xff1a;https://product.kylinos.cn 现象描述 某服务器系统升级内核至4.19.90-25.22.v2101版本后仍会触发oom导致java进程被kill。 现象分析 oom现象分析 系统messages日志分析&#xff0c;故…

数据编织 Data Fabric:解决“数据孤岛”的新思路

一个不争的事实是&#xff0c;企业内部数据孤岛的形成&#xff0c;根因在于业务发展的复杂性与技术迭代的快速性导致。具体而言&#xff0c;随着企业业务快速增长&#xff0c;如新生产线的引入或外部公司的并购&#xff0c;这些活动往往伴随着新系统上线与独立数据体系的融入&a…

【safari】react在safari浏览器中,遇到异步时间差的问题,导致状态没有及时更新到state,引起传参错误。如何解决

在safari浏览器中&#xff0c;可能会遇到异步时间差的问题&#xff0c;导致状态没有及时更新到state&#xff0c;引起传参错误。 PS&#xff1a;由于useState是一个普通的函数&#xff0c; 定义为() > void;因此此处不能用await/async替代setTimeout&#xff0c;只能用在返…

网络安全行业最大的敌人是自己

在危机四伏的数字丛林时代&#xff0c;网络安全行业需要跳出资本和市场的博弈陷阱&#xff0c;通过拯救自己来拯救所有人。当然&#xff0c;政府和资本也应该意识到这一点。 在当今这个数字化时代&#xff0c;网络安全的重要性与日俱增。然而&#xff0c;尽管政府和企业不断强调…

【vue+el-table】实现表尾合计行分两行显示,一行显示勾选项之和,一行显示合计,已实现,具体思路解析

效果图&#xff1a; 思路解析&#xff1a; 首先进行了el-table列表的组件封装&#xff0c;很多参数是传进来的。如果是普通的列表&#xff0c;相关参数直接定义就行 1、使用el-table的summary-method处理表尾行 &#xff08;1&#xff09;定义summaryIndex用于指定合计在哪一列…

vue学习笔记(十一)——开发心得(axios的封装、promise细节、vue-router开发中的使用)

1. axios的网络请求的封装 1.1 为什么要封装api? 代码分层&#xff0c;便于以后的修改&#xff0c;无需触碰逻辑页面 目标&#xff1a; 网络请求&#xff0c;不散落在各个逻辑页面里&#xff0c;封装起来方便以后修改 1.2 封装api步骤 ① 在项目 src 下新建目录 utlis &am…

VTD学习笔记(一)-启动vtd、基本界面和按钮

写在前面&#xff1a;真快啊&#xff0c;眨眼就毕业上班了&#xff0c;岗位也是做仿真&#xff0c;看来以后就是一直做仿真了&#xff0c;再见了定位~。公司使用的是vtd&#xff0c;看资料是一个很庞大的自动驾驶仿真软件&#xff0c;囊括了车辆动力学到传感器仿真&#xff0c;…

Python list comprehension (列表推导式 - 列表解析式 - 列表生成式)

Python list comprehension {列表推导式 - 列表解析式 - 列表生成式} 1. Python list comprehension (列表推导式 - 列表解析式 - 列表生成式)2. Example3. ExampleReferences Python 中的列表解析式并不是用来解决全新的问题&#xff0c;只是为解决已有问题提供新的语法。 列…

iPad型号数据解析:了解不同iPad型号的连接和扩展性能力

iPad是一款非常受欢迎的平板电脑&#xff0c;拥有多种型号和规格可供选择。在本篇文章中&#xff0c;我们将深入研究不同iPad型号的连接和扩展性能。数据源来自于挖数据平台&#xff0c;该平台提供了全面的iPad型号数据&#xff0c;共计1485个型号。 首先&#xff0c;让我们来…

【D3.js in Action 3 精译_020】2.6 用 D3 设置与修改元素样式 + 名人专访(Nadieh Bremer)+ 2.7 本章小结

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可视化最佳实践&#xff08;下&#xff09;1.4 本章小结 第二章…

怎样用Java程序与数据库建立联系?

首先我们要了解一下JDBC&#xff0c;一个为Java程序与关系型数据库交互提供便利的API&#xff08;应用程序编程接口&#xff09;&#xff0c; 本期我们尝试用Java编程软件IDEA与MYSQL数据库建立联系。 首先我们在IDEA中穿件一个&#xff08;SQL&#xff09;&#xff0c;然后导…

系统编程--Linux下文件其他操作

这里写目录标题 文件存储理论补充dentry、inode 文件其他操作stat函数作用函数原型代码&#xff08;以获取文件大小为例&#xff09;补充&#xff08;获取文件类型&#xff09; lstat函数作用函数原型代码补充&#xff08;获取文件权限&#xff09;总结 tipslink函数作用简介函…

畅玩游戏新选择 :游戏本 Windows10 64位 专业版!

对于喜欢游戏竞技的玩家而言&#xff0c;选择一款合适的操作系统对于提升游戏体验至关重要。为了满足这一需求&#xff0c;系统之家小编将带来高性能的游戏本专用Win10操作系统。这一版本系统不仅注重游戏的稳定性&#xff0c;还针对玩家在游戏中可能遇到的超时检测和恢复&…

收银系统源码-千呼新零售收银视频介绍

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

JavaScript 模板字符串:让字符串拼接变得更优雅

在 JavaScript 开发中&#xff0c;字符串拼接是一个常见的需求。从简单的用户界面文本生成到复杂的动态数据格式化&#xff0c;字符串操作无处不在。传统的字符串拼接方法虽然功能强大&#xff0c;但往往显得冗长且难以阅读。为了解决这一问题&#xff0c;ES6&#xff08;ECMAS…

240718_使用Labelme制作自己的图像分割数据集

240718_使用Labelme制作自己的图像分割数据集 从目标检测入门的朋友们可能更熟悉的是LabelImg&#xff0c;这里要注意做好区分&#xff0c;LabelImg和Labelme不是一个东西&#xff0c;如下经典图&#xff1a; &#xff08;a&#xff09;图像分类&#xff08;目标检测&#xff…

Mysql深入讲解(索引、事务、锁机制)

一、MySQL索引 1、何为索引&#xff1f; MySQL中的索引是一种数据结构&#xff0c;用于加快对数据库表中数据的查询速度【查询速度提升】。它类似于书本目录&#xff0c;使得用户可以根据特定字段快速定位到所需的数据行&#xff0c;而无需扫描整个表。 2、索引分类 Hash索…

怎样对 PostgreSQL 中的慢查询进行分析和优化?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 怎样对 PostgreSQL 中的慢查询进行分析和优化&#xff1f;一、理解慢查询的危害二、找出慢查询&#x…

Linux可视化工具-netdata之docker安装

版本要求 docker cli安装 docker pull netdata/netdata docker run -d --namenetdata \ --pidhost \ --networkhost \ -v netdataconfig:/etc/netdata \ -v netdatalib:/var/lib/netdata \ -v netdatacache:/var/cache/netdata \ -v /:/host/root:ro,rslave \ -v /etc/passwd…