> 백엔드 개발 > PHP 튜토리얼 > 冒泡排序两个 for 循环分别有什么作用?能用最简单的话解释吗?

冒泡排序两个 for 循环分别有什么作用?能用最简单的话解释吗?

WBOY
풀어 주다: 2016-06-17 08:32:33
원래의
4745명이 탐색했습니다.

回复内容:

本来想上个直观图:发现知乎不支持 gif 格式,给个链接吧

upload.wikimedia.org/wi

对于「冒泡排序」算法,核心是 冒泡。

如何冒泡?也就是说,把数组中最小的那个往上,冒的过程就是和他相邻的元素交换。这个冒的过程就是内循环。

经过了一个冒的过程,可以使一个最小的元素冒出来,如果数组里面有 n 个元素,就得冒 n-1 次,这就是外循环。

附我一篇博文:为什么说任何基于比较的算法将5个元素排序都需要7次? 冒泡就是,经过多轮相邻两两比较交换,每次都把当前数组中最小的“冒”到最头上,然后把这个数排除在外,剩下的那些数字不断重复这个过程,最后形成一个有序的数列。
第一个循环(外循环),负责把那个数字排除在外。
第二个循环(内循环),负责两两比较交换

可以自己随便编造个数组,然后对着随便哪找的代码模拟一遍,然后就理解了。
想想有一群泡泡
其中一个泡泡跑到一个泡小妹说,小妹小妹你过来咱俩比比谁大,小妹说哇你好大,于是他跑到了泡小妹前面,又跟前面的一个泡大哥说,大哥,咱俩比比谁大呗。泡大哥看了他一眼他就老实了。这就是内层的for,那个泡泡跟每个人都比一次。
话说那个泡泡刚老实下来,另一个泡泡又开始跟别人比谁大了,这就是外层的for,每个泡泡都会做一次跟其他泡泡比个没完的事。 第一个循环目的是把你每次需要的泡冒到该次的最上面
第二个循环目的是要冒多少次才能把所有泡冒完。
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿