2026, 새로운 도약을 시작합니다.

[알고리즘]퀵 정렬(Quick Sort)

· 9년 전 · 360

<?

// 퀵 정렬(Quick Sort)

function Swap(&$arr, $idx1, $idx2) {

$temp = $arr[$idx1];

$arr[$idx1] = $arr[$idx2];

$arr[$idx2] = $temp; 

}

// 중간값 찾기

function MedianOfThree($arr, $left, $right) {

$samples = array($left, floor(($left+$right)/2), $right);

if ($arr[$samples[0]] > $arr[$samples[1]])

Swap($samples, 0, 1);

if ($arr[$samples[1]] > $arr[$samples[2]])

Swap($samples, 1, 2);

if ($arr[$samples[0]] > $arr[$samples[1]])

Swap($samples, 0, 1);

return $samples[1];

}

function Partition(&$arr, $left, $right) {

$pIdx = MedianOfThree($arr, $left, $right);// 중간값으로 피벗 선택

$pivot = $arr[$pIdx];

$low = $left + 1;

$high = $right;

Swap($arr, $left, $pIdx); // 피벗을 가장 왼쪽으로 이동

while ($low <= $high) {// 교차되지 않을 때까지 반복

// 피벗보다 큰 값을 찾는 과정

while ($low <= $right  && $pivot >= $arr[$low])

$low++;

// 피벗보다 작은 값을 찾는 과정

while ($high >= ($left+1) && $pivot <= $arr[$high])  

$high--;

// 교차되지 않는 상태라면 Swap 실행

if ($low <= $high)

Swap($arr, $low, $high);

}

Swap($arr, $left, $high);// 피벗과 high 가 가리키는 대상 교환

return $high;// 옮겨진 피벗의 위치정보 교환

}

function QuickSort(&$arr, $left, $right) {

if ($left < $right) {

$pivot = Partition($arr, $left, $right); 

QuickSort($arr, $left, $pivot-1);

QuickSort($arr, $pivot+1, $right);

}

}

$arr = array(3, 2, 4, 1, 7, 6, 5);

$len = count($arr);

QuickSort($arr, 0, $len-1);

print_r($arr);

?>

|

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

프로그램

번호 제목 글쓴이 날짜 조회
8230 9년 전 조회 18
8229 9년 전 조회 25
8228 9년 전 조회 62
8227 9년 전 조회 71
8226 9년 전 조회 115
8225 9년 전 조회 99
8224 9년 전 조회 92
8223 9년 전 조회 53
8222 9년 전 조회 126
8221 9년 전 조회 37
8220 9년 전 조회 35
8219 9년 전 조회 38
8218 9년 전 조회 72
8217 9년 전 조회 51
8216 9년 전 조회 100
8215 9년 전 조회 55
8214 9년 전 조회 175
8213 9년 전 조회 115
8212 9년 전 조회 22
8211 9년 전 조회 191
8210 9년 전 조회 180
8209 9년 전 조회 281
8208 9년 전 조회 153
8207 9년 전 조회 171
8206 9년 전 조회 127
8205 9년 전 조회 119
8204 9년 전 조회 75
8203 9년 전 조회 168
8202 9년 전 조회 97
8201 9년 전 조회 137
8200 9년 전 조회 94
8199 9년 전 조회 148
8198 9년 전 조회 123
8197 9년 전 조회 102
8196 9년 전 조회 479
8195 9년 전 조회 102
8194 9년 전 조회 238
8193 9년 전 조회 108
8192 9년 전 조회 132
8191 9년 전 조회 87
8190 9년 전 조회 83
8189 9년 전 조회 139
8188 9년 전 조회 70
8187 9년 전 조회 91
8186 9년 전 조회 101
8185 9년 전 조회 260
8184 9년 전 조회 56
8183 9년 전 조회 285
8182 9년 전 조회 115
8181 9년 전 조회 81
8180 9년 전 조회 646
8179 9년 전 조회 443
8178 9년 전 조회 247
8177 9년 전 조회 253
8176 9년 전 조회 298
8175 9년 전 조회 172
8174 9년 전 조회 178
8173 9년 전 조회 295
8172 9년 전 조회 138
8171 9년 전 조회 137
8170 9년 전 조회 245
8169 9년 전 조회 212
8168 9년 전 조회 263
8167 9년 전 조회 274
8166 9년 전 조회 187
8165 9년 전 조회 128
8164 9년 전 조회 247
8163 9년 전 조회 234
8162 9년 전 조회 244
8161 9년 전 조회 233
8160 9년 전 조회 436
8159 9년 전 조회 340
8158 9년 전 조회 162
8157 9년 전 조회 307
8156 9년 전 조회 219
8155 9년 전 조회 201
8154 9년 전 조회 540
8153 9년 전 조회 174
8152 9년 전 조회 345
8151 9년 전 조회 356
8150 9년 전 조회 445
8149 9년 전 조회 283
8148 9년 전 조회 112
8147 9년 전 조회 331
8146 9년 전 조회 386
8145 9년 전 조회 305
8144 9년 전 조회 271
8143 9년 전 조회 125
8142 9년 전 조회 377
8141 9년 전 조회 326
8140 9년 전 조회 868
8139 9년 전 조회 192
8138 9년 전 조회 339
8137 9년 전 조회 315
8136 9년 전 조회 683
8135 9년 전 조회 721
8134 9년 전 조회 437
8133 9년 전 조회 386
8132 9년 전 조회 399
8131 9년 전 조회 753
🐛 버그신고