- 冒泡排序函数的正确设计
当数组传参的时候,实际上只是把数组的首元素的地址传递过去 - 冒泡排序()
冒泡排序的思想:两两相邻的元素进行比较,并且可能的话需要交换!
一趟冒泡排序解决一个数
10个数字要进行9趟冒泡排序
n ---- n-1趟
第一趟:十个数字待排序 9对比较
第二趟:九个数字待排序 八队比较
确定躺数
经典错误,会心一笑
交换tmp经典
数组传参的时候,传递的其实是数组首元素的地址
导致sz = 1 求好再给我传过来
如何传
在创建的时候,将int sz放进()
这样才对了- 这个代码效率不高:
我总是在比较,只是没有交换而已,我们只要做一次分析
如果我们发现他们有序,就不用比较
已经有序,不用冒泡
引入flag,只要交换flag =0;
iflag=1就没有进行交换,说明这一队已经有序,不用冒泡排序
if() break;
王同学:我们现在在交换两个变量的值
只要创建一个临时变量就行了
地址不能随便交换
地址是个编号,是个门牌号0x00121
把教室的两批同学交换但是你不能交换两个教室的门牌号啊
- 这个代码效率不高:
- 数组名是什么
首元素的地址
果然是这样的
找茬
int sz = sizeof (arr);
printf("%d",sz);
有两个例外
1.sizeof(数组名) - 数组名表示整个数组-计算的是整个数组的大小单位是字节
2.&数组名-数组名代表整个数组-取出的是整个数组的地址
正常情况下数组名都是首元素的地址
但是呢
printf("%p",&arr);第一种
printf("%p",arr);第二种
printf("%p",&arr[0]);第三种
0x28 就是2*16的一次方加上2*16的零次方
32+8=40
第一种和第二种结果都一样,以为讲错了
其实没讲错
值一样,意义不一样
第一种&arr取出的是数组的地址
数组地址加一和数组首元素地址加一不一样
数组作为函数参数
最新推荐文章于 2024-09-13 10:21:40 发布