1. 버블 정렬 알고리즘
프로세스:
1. 전체 배열을 탐색하고 $a[$i]>$a[$i+1]과 같은 인접한 요소의 모든 쌍을 비교한 다음 위치를 바꿉니다. , 비교당 하나의 역순을 제거합니다.
2. 각 사이클이 끝나면 다음에 필요한 사이클 수가 1씩 줄어듭니다.
<?php // 冒泡排序 $arr = createarr(20); printarr($arr); popsort($arr); printarr($arr); function createarr($num=10){ $arr = array(); for($i=0; $i<$num; $i++){ array_push($arr, mt_rand(0,999)); } return $arr; } function printarr($arr){ echo 'arr:'.implode(',', $arr).'<br>'; } function popsort(&$arr){ for($i=0,$length=count($arr)-1; $i<$length; $i++){ for($j=0; $j<$length-$i; $j++){ if($arr[$j]>$arr[$j+1]){ $tmp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $tmp; } } } } ?>
2. 이진 삽입 정렬
프로세스:
1 먼저 원래 배열은 $low=0 $high=count($arr)-1입니다.
2. 삽입할 숫자를 배열의 중간 요소와 비교하세요.
가운데 요소보다 큰 경우 $low=$mid+1이 다음 판단을 위한 배열의 시작으로 사용됩니다.
가운데 요소보다 작을 경우 $high=$mid-1이 다음 판단을 위한 배열의 끝으로 사용됩니다.
3. $low>$high가 끝날 때까지 $low는 새 요소가 삽입되는 위치입니다.
4. 배열의 $low부터 시작하는 모든 요소를 하나씩 뒤로 이동한 다음 $low 위치에 새 요소를 삽입합니다.
<?php // 二分法插入排序 $arr = createarr(20); $key = mt_rand(0,99); printarr($arr); echo 'key='.$key.'<br>'; binsort($arr, $key); printarr($arr); function createarr($num=10){ $arr = array(); for($i=0; $i<$num; $i++){ array_push($arr, mt_rand(0,99)); } sort($arr); // 有序序列 return $arr; } function printarr($arr){ echo 'arr:'.implode(',', $arr).'<br>'; } function binsort(&$arr, $key){ $low = 0; $high = count($arr)-1; while($low<=$high){ $m = $low + (int)(($high-$low)/2); $mkey = $arr[$m]; if($key>=$mkey){ $low = $m + 1; }else{ $high = $m - 1; } } // 移动插入位置之后的元素,插入新元素 for($i=count($arr)-1; $i>=$low; $i--){ $arr[$i+1] = $arr[$i]; } $arr[$low] = $key; } ?>
3. 빠른 정렬
프로세스:
1. 일반적으로 배열의 첫 번째 요소를 키로 사용합니다.
2. length-1
3.j-- arr[j]
5. i==j가 완료될 때까지 3단계와 4단계를 반복합니다.
6. 키로 구분된 왼쪽 및 오른쪽 요소 집합에 대해 1, 2, 3, 4, 5(재귀적으로)를 실행합니다.
<?php // 快速排序 $arr = createarr(20); printarr($arr); quicksort($arr, 0, count($arr)-1); printarr($arr); function createarr($num=10){ $arr = array(); for($i=0; $i<$num; $i++){ array_push($arr, mt_rand(0,999)); } return $arr; } function printarr($arr){ echo 'arr:'.implode(',', $arr).'<br>'; } function quicksort(&$arr, $low, $high){ if($low>=$high){ return ; } $key = $arr[$low]; $i = $low; $j = $high; $flag = 1; while($i!=$j){ switch($flag){ case 0: if($arr[$i]>$key){ $tmp = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $tmp; $flag = 1; }else{ $i++; } break; case 1: if($arr[$j]<$key){ $tmp = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $tmp; $flag = 0; }else{ $j--; } break; } } quicksort($arr, $low, $i-1); quicksort($arr, $i+1, $high); } ?>
이 글에서는 버블링, 이분법 삽입, 빠른 정렬 알고리즘에 대해 설명합니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 참고해주세요.
관련 권장 사항:
php를 통해 html 태그 속성 클래스를 필터링하는 방법
PHP를 사용하여 민감한 문자열을 바꾸는 방법에 대한 관련 작업
위 내용은 버블링, 바이너리 삽입 및 빠른 정렬 알고리즘 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!