当前位置:网站首页>超详细!!!让你了解冒泡排序的底层逻辑和思想
超详细!!!让你了解冒泡排序的底层逻辑和思想
2022-07-31 05:17:00 【乐言..】
冒泡排序
前言
本文将细致入微让你理解冒泡排序的底层逻辑,和用法
适合复习和初学者入
提示:以下是本篇文章正文内容,下面案例可供参考
一、冒泡排序是什么
冒泡排序是一种排序数组内元素大小的方法。
二、基本逻辑

让相邻的两个元素进行比较,如果大的话就交换位置

一趟冒泡排序之后9数组最大,移到了数组最右边
所以N个元素时,最坏的情况下,我们要进行n-1次冒泡排序。
主函数如下:
基本逻辑:
1.定义数组
3.用函数实现
4.挨个打印
int main()
{
int arr[10]={9,8,7,6,5,4,3,2,1,0};
bubble_sort(arr);
int i=0;
for(i=0;i<sz;i++)
{
printf("%d",arr[i]);
}
return 0;
}冒泡排序函数代码如下:
基本逻辑:
1:求数组长度
2:外循环,最多可以进行sz-1次冒泡排序
3:内循环:采用逐渐减少的逻辑
4:实现相邻两个元素的交换
void bubble_sort(int arr[10])
{
int sz =sizeof(arr)/sizeof(arr[0]);
int i=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 tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
}然而神奇的事情发生了,我们经过调试之后发现:

数组根本就没有进行排序?????????
有的新手到这里开始气急败坏,破口大骂:我辛辛苦苦写的代码,结果就是啥也不是???
不急,乐言在这里会给你解答
数组在传参时传达的是数组名,而数组名是首元素的地址
![]()
所以当我们监视时,发现值为1;
此时我们要知道一个重要的点:数组传参是,传递的是数组名,而数组名是首元素的地址,所以传参时,传递的就是首元素的地址,所以数组的形式参数是指针变量。(也成为数组名的降级)
所以在函数内求元素个数,是不可取的,修改代码如下:
void bubble_sort(int arr[],int sz)
{
int i=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 tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}然后将主函数中加上求数组长度的代码即可!!!
如下:
int main()
{
int arr[10]={9,8,7,6,5,4,3,2,1,0};
int sz=sizeof(arr)/sizeof(arr[0]);
bubble_sort(arr);
int i=0;
for(i=0;i<sz;i++)
{
printf("%d",arr[i]);
}
return 0;
}总结
1:数组传参是,传递的是数组名,而数组名是首元素的地址,所以传参时,传递的就是首元素的地址,所以数组的形式参数是指针变量。(也成为数组名的降级)
2:冒泡排序的基本逻辑是两两相比较
边栏推荐
- 【Rhapsody学习笔记】2:Count Down
- Four common ways of POST to submit data
- Jupyter内核正忙、内核挂掉
- Cholesterol-PEG-DBCO Cholesterol-Polyethylene Glycol-Diphenylcyclooctyne Chemical Reagent
- The content of the wangeditor editor is transferred to the background server for storage
- 用pytorch里的children方法自定义网络
- Data Preprocessing, Feature Engineering, and Feature Learning - Excerpt
- cocos2d-x-3.2 create project method
- Tensorflow相关list
- YOLOX中的SimOTA
猜你喜欢

DC-CDN学习笔记

Tensorflow steps on the pit while using it

Cholesterol-PEG-DBCO Cholesterol-Polyethylene Glycol-Diphenylcyclooctyne Chemical Reagent

box-shadow related properties

ImportError: cannot import name ‘Xxxx‘ from partially initialized module ‘xx.xx.xx‘

【Rhapsody学习笔记】2:Count Down

DSPE-PEG-COOH CAS:1403744-37-5 磷脂-聚乙二醇-羧基脂质PEG共轭物

DSPE-PEG-Biotin,CAS:385437-57-0,磷脂-聚乙二醇-生物素可延长循环半衰期

mPEG-DSPE 178744-28-0 Methoxy-polyethylene glycol-phosphatidylethanolamine linear PEG phospholipids

CNN的一点理解
随机推荐
ROS之service编程的学习和理解
Where can I find the private files set by myself?
box-shadow related properties
Cholesterol-PEG-Acid CLS-PEG-COOH 胆固醇-聚乙二醇-羧基修饰肽类化合物
Attention based ASR(LAS)
【解决问题】RuntimeError: The size of tensor a (80) must match the size of tensor b (56) at non-singleton
Multi-Modal Face Anti-Spoofing Based on Central Difference Networks学习笔记
MySQL 入门:Case 语句很好用
自己设置的私密文件,在哪找
浏览器中的画中画(Picture-in-Picture)API
拒绝采样小记
mysql 事务原理详解
CAS:474922-22-0 Maleimide-PEG-DSPE Phospholipid-Polyethylene Glycol-Maleimide Brief Description
ImportError: cannot import name ‘Xxxx‘ from partially initialized module ‘xx.xx.xx‘
MySQL free installation download and configuration tutorial
超详细!!!让你通透数组!!!初学复习不迷路!!
[Solved] ssh connection report: Bad owner or permissions on C:\\Users/XXX/.ssh/config
活体检测CDCN学习笔记
cocos2d-x implements cross-platform directory traversal
多线程截取视频为每帧