**前言**:本人喜好编程,爱思考,欢迎大家以后在编程的路上和小博一起互动,一起追梦哦😊 |
石以砥焉,化钝为利。 ——刘禹锡
一.冒泡排序的思想
1.我们需要搞清楚冒泡排序是什么
2.怎么把冒泡排序的思想用代码编译出来
冒泡排序:两两相邻的元素进行比较,较大者排到最后面,最终实现一个升序的排列.
冒泡排序需要进行比较,而一趟冒泡排序只能确定一个数字的位置,所以需要循环,下面请各位看官看仔细喽<ta
#define _CRT_SECURE_NO_WARNINGS 1
//冒泡排序:两两相邻的元素进行比较
#include<stdio.h>
void bubble_sort(int arr[])
{
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz - 1; i++)
{
/*一趟冒泡排序的过程*/
int j = 0;
for (j = 0; j < sz - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main()
{
int arr[] = { 3,1,5,9,2,4,7,6,8,0 };
/*int sz = sizeof(arr) / sizeof(arr[0]);*/
bubble_sort(arr);
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
}
二.冒泡排序中可能出现的迷点
1.数组名的使用规则
2.怎么样去调试.
为什么会出现这个情况呢,数字的顺序一动不动,当时我看到的时候,我也很是震惊
,但我们换个角度想一想,又到了和代码战斗的环节了,所以兄弟们我们此时不要害怕😮💨,我们先给自己鼓足勇气,我也给屏幕前的你们送一颗小红心打气💞💞.
开始调试
这里我们不难发现sz的取值为1,为什么会这样呢,此时需要我们发动小脑瓜了🧠,我们理想中的sz的值应该为10才对,可这里为1,说明分子分母大小相等,sizeof(arr)=sizeof(arr[0])!!!
数组名如果单独放在sizeof内部,这里的数组名表示整个数组,计算的是整个数组的大小。&加数组名,这里的数组名表示整个数组,取出的是整个数组的地址,除此之外,遇到的所有数组名都是数组首元素的地址。
所以说兄弟们,我们在定义bubble_sort(arr)的时候,这里的arr是数组首元素的地址,所以sizeof(arr)/sizeof(arr[0])完全等价于sizeof(arr[0])/sizeof(arr[0]),所以它的结果为1.
总结:在以后的编程道路上,我们可能会遇到各种各样的困难,但我们要敢于直面困难,要相信我们自己,不能半途而废,风雨过后总会出现绚丽的彩虹,也许前进的路上布满荆棘,但是你要相信没有那么多天赋异禀的人,比你优秀的人都在孤独地翻山越岭,好了,这期就到此结束了,让我们下期再见❤️❤️❤️。 |