ፍልልይ ኣብ መንጎ ክለሳታት «ኮምፒዩተር ሳይንስ»
Content deleted Content added
No edit summary |
No edit summary |
||
መስመር 20፦
ገና ስእሊ ክመጽእ እዩ....
እቲ ዝስዕብ ኣገባብ (= function) ነቲ ቀንዲ ባእታ ይደሊ፣
ነቲ ዓውዲ (files[ ]) ከኣ ይመቅሎ፥
ቀንዲ ባእታ = Pivot
function divide(left, right) {
i := left
// ካብቲ ቀንዲ ባእታ ብጸጋም ዘሎ ‚j’ ይጀምር፥
j := right - 1
pivot := files[right]
loop
// ካብቲ ቀንዲ ባእታ ዝዓበየ ባእታ ኣብ ጸጋም ዘሎ ይደሊ፥
loop while files[i] ≤ pivot and i < right
i := i + 1
end
// ካብቲ ቀንዲ ባእታ ዝነኣሰ ባእታ ኣብ የማን ዘሎ ይደሊ፥
loop while files[j] ≥ pivot and j > left
j := j - 1
end
if i ≤ j then swap files[i] with files[j]
while i ≤ j // እቲ ‘i’ kabti ‘j’ ከይሓለፈ ከሎ
// ነቲ ቀንዲ ባእታ (files[right]) ምስ ሓድሽ ውሱን ኣቀማምጣ (files[i]) ይለዋወጥ፥
if files[i] > pivot
swap files[i] with files[right]
end
// ነቲ ቦታ ናይቲ ቀንዲ ባእታ ይመልስ፥
return i
end
}
ሕጂ እቲ ዝስዕብ ኣገባብ ነቲ ምሉእ ክዊክሶርት ምስቲ ላዕላዋይ ኣገባብ ብሓፈሽኡ ይገልጽ፥
function quicksort(left, right)
while right > left loop
divider := divide (left, right)
if right-divider > divider-left
quicksort(left, divider - 1) // እቲ ዝንእስ ክፋል እንደገና …
left := divider + 1 // … እቶም ዝዕብይ ከኣ ይሰርዕ
else
quicksort(divider + 1, right)
right := divider - 1
end
end
end
|