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

【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://www.xdnf.cn/news/10579.html

相关文章:

  • ShardingSphere 分片策略深度解析
  • 导入典籍数据
  • 《仿盒马》app开发技术分享-- 购物车业务逻辑完善(端云一体)
  • java 多线程
  • 基于贝叶斯优化神经网络的光伏功率预测综述
  • Java JVM 内存模型详解
  • LeetCode 付费题157. 用 Read4 读取 N 个字符解题思路
  • deep forest安装及使用教程
  • 强大的PDF编辑工具,操作方便 ,长久使用
  • 第1天:认识RNN及RNN初步实验(预测下一个数字)
  • 【C盘瘦身】Docker安装目录占用C盘过大,一键移动给C盘瘦身
  • 大数据-275 Spark MLib - 基础介绍 机器学习算法 集成学习 随机森林 Bagging Boosting
  • 8、电解电容—数据手册解读
  • Unity使用Lua框架和C#框架开发游戏的区别
  • 2022年上半年软件设计师下午试题
  • 6月2日星期一今日早报简报微语报早读
  • 知识图谱系列(5):表示学习
  • 内网应用如何实现外网访问?无公网IP本地端口网址服务提供互联网连接
  • HCIP:MPLS LDP的原理和配置
  • Go开发简历优化指南
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月2日第96弹
  • 高压电绝缘子破损目标检测数据集简介与应用
  • MDP的curriculums部分
  • GNOME开始菜单
  • gcc编译构建流程-动态链接库
  • YOLO机械臂丨使用unity搭建仿真环境,YOLO算法识别,Moveit2控制
  • 残差神经网络ResNet
  • Webpack依赖
  • 前端面试准备-6
  • unity随机生成未知符号教程