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

【C语言入门级教学】冒泡排序和指针数组

文章目录

  • 1.冒泡排序
  • 2.⼆级指针
  • 3.指针数组
  • 4.指针数组模拟⼆维数组

1.冒泡排序

冒泡排序的核⼼思想:两两相邻的元素进⾏⽐较。

 //⽅法1  
void bubble_sort(int arr[], int sz)//参数接收数组元素个数  
{ int i = 0;for(i=0; i-1; i++) { int j = 0; for(j=0; j-1; j++) { if(arr[j] > arr[j+1]) { int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } } 
} 
int main() 
{ int arr[] = {3,1,7,5,8,9,0,2,4,6};int sz = sizeof(arr)/sizeof(arr[0]); bubble_sort(arr, sz); int i = 0; for(i=0; i<sz;i++)printf("%d ", arr[i]); 
}return 0; 
} 
//⽅法2 - 优化  
void bubble_sort(int arr[], int sz)//参数接收数组元素个数  
{ int i = 0; for(i=0; i-1; i++) { int flag = 1;//假设这⼀趟已经有序了  int j = 0; for(j=0; j-1; j++) { if(arr[j] > arr[j+1]) { flag = 0;//发⽣交换就说明,⽆序  int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } if(flag == 1)//这⼀趟没交换就说明已经有序,后续⽆序排序了  break; } 
} 
int main() 
{ int arr[] = {3,1,7,5,8,9,0,2,4,6}; int sz = sizeof(arr)/sizeof(arr[0]); bubble_sort(arr, sz); int i = 0; for(i=0; i<sz;i++)printf("%d ", arr[i]); 
} return 0; 
}

2.⼆级指针

指针变量也是变量,是变量就有地址,而指针变量的地址存放在⼆级指针中。

⼆级指针画图

对于⼆级指针的运算有:

• *ppa 通过对ppa中的地址进⾏解引⽤,这样找到的是 pa , *ppa 其实访问的就是 pa .

 int b = 20 
*ppa = &b;//等价于 pa = &b; 

• * *ppa 先通过 *ppa 找到 pa ,然后对 pa 进⾏解引⽤操作: * pa ,那找到的是 a .

**ppa = 30; 
//等价于*pa = 30;  
//等价于a = 30;  

3.指针数组

指针数组是指针还是数组? 我们类⽐⼀下,整型数组是存放整型的数组,字符数组是存放字符的数组。 那指针数组就是存放指针的数组。

整型数组和字符数组

指针数组的每个元素都是⽤来存放地址(指针)的。
如下图:

指针数组的每个元素是地址,⼜可以指向⼀块区域。

4.指针数组模拟⼆维数组

#include<stdio.h>  
int main() 
{ int arr1[] = {1,2,3,4,5}; int arr2[] = {2,3,4,5,6}; int arr3[] = {3,4,5,6,7}; //数组名是数组⾸元素的地址,类型是int*的,就可以存放在parr数组中  int* parr[3] = {arr1, arr2, arr3}; int i = 0; int j = 0; for(i=0; i<3; i++) { for(j=0; j<5; j++) { printf("%d ", parr[i][j]); } printf("\n"); }return 0; 
} 

parr数组的画图演⽰

parr[i]是访问parr数组的元素,parr[i]找到的数组元素指向了整型⼀维数组,parr[i][j]就是整型⼀维数组中的元素。
上述的代码模拟出⼆维数组的效果,实际上并⾮完全是⼆维数组,因为每⼀⾏并⾮是连续的


文章转载自:

http://4Od8fwtY.zttjs.cn
http://Mk4wHHxK.zttjs.cn
http://HNP89pku.zttjs.cn
http://qEyeP2Ax.zttjs.cn
http://ktheE6og.zttjs.cn
http://Gczr4uyP.zttjs.cn
http://TZlJ056u.zttjs.cn
http://Bs2zW5Cz.zttjs.cn
http://sB0V9HGK.zttjs.cn
http://ZrpSsm4Y.zttjs.cn
http://wHWh9rz3.zttjs.cn
http://l3MrTNoF.zttjs.cn
http://t1yHWIYr.zttjs.cn
http://KC7uHoHj.zttjs.cn
http://LIhvmcyd.zttjs.cn
http://pCD0jwDF.zttjs.cn
http://ukyKEATs.zttjs.cn
http://e41qhKfZ.zttjs.cn
http://gix7zlap.zttjs.cn
http://N0kx9Rsj.zttjs.cn
http://tlGQwD83.zttjs.cn
http://L2J7I7pO.zttjs.cn
http://bHW5U9XJ.zttjs.cn
http://gcaGy6Wv.zttjs.cn
http://fNuaD6SM.zttjs.cn
http://MO3CWl7e.zttjs.cn
http://SlRFvkmk.zttjs.cn
http://6HV6pWU3.zttjs.cn
http://9wIDkzhl.zttjs.cn
http://f6gbdCn6.zttjs.cn
http://www.dtcms.com/a/227790.html

相关文章:

  • 【TMS570LC4357】之相关驱动开发学习记录1
  • Baklib赋能企业AI知识管理实践
  • 树莓派实验
  • 电力系统时间同步系统
  • AIOps智能运维体系中Python故障预测与根因分析的应用实践
  • 序列搜索策略
  • 【Zephyr 系列 4】串口通信进阶:打造自己的 AT 命令框架
  • 《Pytorch深度学习实践》ch3-反向传播
  • NX869NX874美光固态颗粒NX877NX883
  • AI助力软件开发 – 豆包+Trae CN开发体验
  • 盒子模型与页面布局基础
  • 【C语言预处理详解(上)】--预定义符号,#define定义常量,#define定义宏,带有副作用的宏参数,宏替换的规则,宏和函数的对比
  • 【2025年B卷】华为OD-100分-字符串重新排列、字符串重新排序
  • InlineHook的原理与做法
  • 无畏契约 directx runtime修复
  • 【技术支持】安卓开发中queryUsageStats不准确的问题
  • esp32关于PWM最清晰的解释
  • Ⅱ.计算机二级选择题(运算符与表达式)
  • EchoMimicV2:迈向引人注目、简化的半身人类动画
  • Fisher准则例题——给定样本数据
  • (Python)列表的操作(增删改查、排序)
  • 信息安全管理与评估2024山东卷WAF答案
  • 第七章.正则表达式
  • 车载软件更新 --- 数据完整性和正确性策略(数据验签事宜汇总)
  • 经典数学教材推荐(AI相关)
  • 《人性的弱点》能带给我们什么?
  • 构建高性能风控指标系统
  • 初识Linux指令(笔记2)
  • 业务系统-AI 智能导航设计-系统设计篇(上)
  • Matlab绘图