PHP 四种基本排序算法的代码实现(1)
PHP 四种基本排序算法的代码实现(1)
许多人都说算法是程序的核心,算法的好坏决定了程序的质量。作为一个初级phper,虽然很少接触到算法方面的东西。但是对于基本的排序算法还是应该掌握的,它是程序开发的必备工具。这里介绍冒泡排序,插入排序,选择排序,快速排序四种基本算法,分析一下算法的思路。
前提:分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中的值按照从小到大的顺序进行排序。
$arr(1,43,54,62,21,66,32,78,36,76,39);
1. 冒泡排序
思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
<ol class="dp-j"><li class="alt"><span><span>$arr=array(</span><span class="number">1</span><span>,</span><span class="number">43</span><span>,</span><span class="number">54</span><span>,</span><span class="number">62</span><span>,</span><span class="number">21</span><span>,</span><span class="number">66</span><span>,</span><span class="number">32</span><span>,</span><span class="number">78</span><span>,</span><span class="number">36</span><span>,</span><span class="number">76</span><span>,</span><span class="number">39</span><span>); </span></span></li><li><span>function bubbleSort($arr) </span></li><li class="alt"><span>{ </span></li><li><span> $len=count($arr); </span></li><li class="alt"><span> <span class="comment">//该层循环控制 需要冒泡的轮数</span><span> </span></span></li><li><span> <span class="keyword">for</span><span>($i=</span><span class="number">1</span><span>;$i<$len;$i++) </span></span></li><li class="alt"><span> { <span class="comment">//该层循环用来控制每轮 冒出一个数 需要比较的次数</span><span> </span></span></li><li><span> <span class="keyword">for</span><span>($k=</span><span class="number">0</span><span>;$k<$len-$i;$k++) </span></span></li><li class="alt"><span> { </span></li><li><span> <span class="keyword">if</span><span>($arr[$k]>$arr[$k+</span><span class="number">1</span><span>]) </span></span></li><li class="alt"><span> { </span></li><li><span> $tmp=$arr[$k+<span class="number">1</span><span>]; </span></span></li><li class="alt"><span> $arr[$k+<span class="number">1</span><span>]=$arr[$k]; </span></span></li><li><span> $arr[$k]=$tmp; </span></li><li class="alt"><span> } </span></li><li><span> } </span></li><li class="alt"><span> } </span></li><li><span> <span class="keyword">return</span><span> $arr; </span></span></li><li class="alt"><span>} </span></li></ol>
2. 选择排序
思路分析:在要排序的一组数中,选出最小的一个数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
<ol class="dp-j"><li class="alt"><span><span>function selectSort($arr) { </span></span></li><li><span><span class="comment">//双重循环完成,外层控制轮数,内层控制比较次数</span><span> </span></span></li><li class="alt"><span>$len=count($arr); </span></li><li><span><span class="keyword">for</span><span>($i=</span><span class="number">0</span><span>; $i<$len-</span><span class="number">1</span><span>; $i++) { </span></span></li><li class="alt"><span><span class="comment">//先假设最小的值的位置</span><span> </span></span></li><li><span>$p = $i; </span></li><li class="alt"><span> </span></li><li><span><span class="keyword">for</span><span>($j=$i+</span><span class="number">1</span><span>; $j<$len; $j++) { </span></span></li><li class="alt"><span><span class="comment">//$arr[$p] 是当前已知的最小值</span><span> </span></span></li><li><span><span class="keyword">if</span><span>($arr[$p] > $arr[$j]) { </span></span></li><li class="alt"><span><span class="comment">//比较,发现更小的,记录下最小值的位置;并且在下次比较时采用已知的最小值进行比较。</span><span> </span></span></li><li><span>$p = $j; </span></li><li class="alt"><span>} </span></li><li><span>} </span></li><li class="alt"><span><span class="comment">//已经确定了当前的最小值的位置,保存到$p中。如果发现最小值的位置与当前假设的位置$i不同,则位置互换即可。</span><span> </span></span></li><li><span><span class="keyword">if</span><span>($p != $i) { </span></span></li><li class="alt"><span>$tmp = $arr[$p]; </span></li><li><span>$arr[$p] = $arr[$i]; </span></li><li class="alt"><span>$arr[$i] = $tmp; </span></li><li><span>} </span></li><li class="alt"><span>} </span></li><li><span><span class="comment">//返回最终结果</span><span> </span></span></li><li class="alt"><span><span class="keyword">return</span><span> $arr; </span></span></li><li><span>} </span></li></ol>

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP에 로그인하는 것은 매우 쉬운 작업입니다. 한 가지 기능만 사용하면 됩니다. cronjob과 같은 백그라운드 프로세스에 대해 오류, 예외, 사용자 활동, 사용자가 취한 조치를 기록할 수 있습니다. CakePHP에 데이터를 기록하는 것은 쉽습니다. log() 함수는 다음과 같습니다.
