> 백엔드 개발 > PHP 튜토리얼 > PHP의 삽입 정렬

PHP의 삽입 정렬

WBOY
풀어 주다: 2016-07-29 08:54:25
원래의
1208명이 탐색했습니다.

PHP의 삽입 정렬

1. 직접 삽입 정렬 코드 구현:

<code><span><span><?php </span>header(<span>"content-type:text/html;charset=utf-8"</span>);

<span>//直接插入排序实现从小到大排序</span><span>//思路:每一趟排序将待排序的记录(元素)插入到前面的有序数列中,从左到右不断增大有序数列</span><span>//关键:找到前面的有序数列中正确插入位置。</span><span>$arr</span>  =<span>array</span>(<span>6</span>,<span>18</span>,<span>2</span>,<span>4</span>,<span>16</span>,<span>8</span>);

<span>echo</span><span>"<br>排序前:<br>"</span>;
print_r(<span>$arr</span>);

insertSort(<span>$arr</span>);
<span>echo</span><span>"<br>排序后:<br>"</span>;
print_r(<span>$arr</span>);


<span><span>function</span><span>insertSort</span><span>(&<span>$arr</span>)</span>
{</span><span>$len</span> = count(<span>$arr</span>);
  <span>//从第二个记录起,跟前面的有序数列比较寻找插入位置</span><span>for</span>(<span>$i</span> = <span>1</span>;<span>$i</span> $len</span>; <span>$i</span>++)
  {
    <span>$insertData</span> = <span>$arr</span>[<span>$i</span>];<span>//要插入的记录</span><span>$pos</span> = <span>$i</span>;<span>//插入位置</span><span>for</span>(<span>$j</span> = <span>$i</span> - <span>1</span>;<span>$j</span> >= <span>0</span>;<span>$j</span>--)
        {
          <span>if</span>(<span>$arr</span>[<span>$j</span>] > <span>$insertData</span>)<span>//如果前面的记录大于要插入的记录</span>
          {
              <span>$arr</span>[<span>$j</span>+<span>1</span>] = <span>$arr</span>[<span>$j</span>];<span>//前面的记录往后移一个下标</span><span>$pos</span>--;
          }
          <span>else</span>
          {

            <span>break</span>;
          }
        }


     <span>$arr</span>[<span>$pos</span>] = <span>$insertData</span>;<span>//插入到正确位置</span><span>echo</span><span>"<br>第{$i}趟排序结果:"</span>;
     print_r(<span>$arr</span>);

  }



}</span></code>
로그인 후 복사

2. 이진 검색 삽입 정렬 코드 구현

<code><span><span><?php </span>header(<span>"content-type:text/html;charset=utf-8"</span>);

<span>//二分查找插入排序:跟直接插入排序思路差不多,不同在通过二分查找来确定插入位置</span><span>$arr</span>  =<span>array</span>(<span>6</span>,<span>18</span>,<span>2</span>,<span>4</span>,<span>16</span>,<span>8</span>);

<span>echo</span><span>"<br>排序前:<br>"</span>;
print_r(<span>$arr</span>);

bsInsertSort(<span>$arr</span>);
<span>echo</span><span>"<br>排序后:<br>"</span>;
print_r(<span>$arr</span>);


<span><span>function</span><span>bsInsertSort</span><span>(&<span>$arr</span>)</span>
{</span><span>$len</span> = count(<span>$arr</span>);
  <span>for</span>(<span>$i</span> = <span>1</span>;<span>$i</span> $len</span>; <span>$i</span>++)
  {
     <span>$left</span> = <span>0</span>;
     <span>$right</span> = <span>$i</span> -<span>1</span>;
     <span>$mid</span> = <span>0</span>;
     <span>$insertData</span> = <span>$arr</span>[<span>$i</span>];<span>//要插入的记录</span><span>while</span>(<span>$left</span>$right</span>)
     {
       <span>$mid</span> = (<span>$left</span> + <span>$right</span>)/<span>2</span>;
       <span>if</span>(<span>$insertData</span> > <span>$arr</span>[<span>$mid</span>])
       {
         <span>$left</span> = <span>$mid</span> + <span>1</span>;
       }<span>else</span>
       {
         <span>$right</span> = <span>$mid</span> -<span>1</span>;
       }
     }

     <span>//$left是要插入的位置</span><span>for</span>(<span>$j</span>=<span>$i</span>-<span>1</span>;<span>$j</span>>=<span>$left</span>;<span>$j</span>--)
     {
       <span>$arr</span>[<span>$j</span>+<span>1</span>]  = <span>$arr</span>[<span>$j</span>];<span>//后移比插入记录大的数</span>
     }

     <span>$arr</span>[<span>$left</span>] = <span>$insertData</span>;
  }
}</code>
로그인 후 복사
' ).addClass('사전 번호 매기기').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

위 내용은 삽입정렬과 PHP 내용을 포함하여 PHP에서의 삽입정렬에 대한 소개입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿