You are on page 1of 23

‫ﺍاﻟﺨﻮﺍاﺭرﺯزﻣﻴﺎﺕت‬

‫ﺍاﻟﺨﻮﺍاﺭرﺯزﻣﻴﺔ ﻫﻲ ﻋﺪﺓة ﺧﻄﻮﺍاﺕت ﻣﺘﺮﺍاﺑﻄﺔ ﻣﻦ ﻧﺺ ﺑﺮﻣﺠﻲ ﺗﺤﻞ‬


‫ﻣﺸﻜﻠﺔ ﻣﻌﻴﻨﻪ‬
‫ﺗﻘﺎﺱس ﺳﺮﻋﻪ ﺍاﻟﺨﻮﺍاﺭرﺯزﻣﻴﺔ ﺑﻤﻘﻴﺎﺱس ‪Big O‬‬
‫‪ Big O‬ﻭوﻫﻮ ﻣﻘﻴﺎﺱس ﺭرﻳﺎﺿﻲ ﻟﻠﻮﻗﺖ ﺍاﻟﺬﻱي ﺗﺎﺧﺬﻩه ﺧﻮﺍاﺭرﺯزﻣﻴﺔ ﻣﻌﻴﻨﻪ‬
‫ﻻﻛﻤﺎﻝل ﻋﻤﻠﻬﺎ‬
‫ﺳﺮﻋﺔ ﺍاﻟﺨﻮﺍاﺭرﺯزﻣﻴﺔ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﻛﻤﻴﺔ ﺍاﻟﺒﻴﺎﻧﺎﺕت ﺍاﻟﺘﻲ ﻳﺠﺮﻱي‬
‫ﻣﻌﺎﻟﺠﺘﻬﺎ ﻭو ﻫﻴﻜﻠﻴﺘﻬﺎ‬
‫ﻣﻦ ﺍاﻟﻤﻘﺒﻮﻝل ﺟﺪﺍا ﺍاﻥن ﻳﻜﻮﻥن ﺍاﻻﺻﺪﺍاﺭر ﺍاﻻﻭوﻝل ﻣﻦ ﺍاﻟﺨﻮﺍاﺭرﺯزﻣﻴﺔ ﻟﻴﺲ‬
‫ﺑﺎﻟﻜﻔﺎﺀءﺓة ﺍاﻟﻤﻄﻠﻮﺑﺔ ﻻﺧﺘﺼﺎﺭر ﻭوﻗﺖ ﺍاﻟﻨﻤﺬﺟﺔ ﺍاﻻﻭوﻟﻴﺔ‬
‫‪ Protoypting‬ﻭوﺗﺤﺴﻴﻨﻬﺎ ﻓﻲ ﻭوﻗﺖ ﻻﺣﻖ ‪.‬‬
‫)‪O(1‬‬
‫‪Constant-Time Algorithm‬‬

‫ﺑﻐﺾ ﺍاﻟﻨﻈﺮ ﻋﻦ ﻋﺪﺩد ﺍاﻟﻌﻨﺎﺻﺮ ﻓﺄﻥن ﺍاﻟﻮﻗﺖ ﺍاﻟﻤﺴﺘﻐﺮﻕق ﻻﺗﻤﺎﻡم‬


‫ﺍاﻟﻌﻤﻠﻴﺔ ﺛﺎﺑﺖ‬
‫ﻣﺜﺎﻝل‬
‫ﺍاﺳﺘﺪﻋﺎﺀء ﻗﻴﻤﺔ ﻋﻨﺼﺮ ﻣﺤﺪﺩد ﻣﻦ ﻣﺼﻔﻮﻓﺔ ﻧﻌﺮﻑف ﻣﻮﻗﻌﻪ‬
‫ﺑﺎﻟﻀﺒﻂ‬

‫{ >= )‪const getLast = (items‬‬


‫;]‪return items[items.length-1‬‬
‫;}‬
let arr = […]
JSLitmus.test('Find last item', function() {
getLast(arr);
});
‫)‪O(n‬‬
‫‪Linear-Time Algorithm‬‬

‫ﻋﺪﺩد ﺍاﻟﺨﻄﻮﺍاﺕت ﻟﻠﻮﺻﻮﻝل ﺍاﻟﻰ ﺍاﻟﺤﻞ ﻳﺘﻨﺎﺳﺐ ﺧﻄﻴﺎ ‪ Linear‬ﻣﻊ‬


‫ﻋﺪﺩد ﺍاﻟﻌﻨﺎﺻﺮ‬
‫‪ ١٠‬ﻋﻨﺎﺻﺮ = ‪ ١٠‬ﺧﻄﻮﺍاﺕت‬
‫ﻣﺜﺎﻝل‬
‫ﺍاﻟﺒﺤﺚ ﻋﻦ ﻣﻮﻗﻊ ﻗﻴﻤﺔ ﻣﻌﻴﻨﻪ ﻓﻲ ﻣﺼﻔﻮﻓﺔ ﺍاﺣﺎﺩدﻳﺔ ﺍاﻟﺒﻌﺪ‬
for ‫ﺑﺄﺳﺘﺨﺪﺍاﻡم‬

const findIndex = (items, match) => {


for (let i=0, total=items.length; i < total; i++)
if (items[i] == match)
return i;
return -1;
};
const arr= [“a","b","c","d"];

JSLitmus.test(‘find index of value', function() {


findIndex(arr,”a");
});
‫ﻟﻜﻞ ﺧﻮﺍاﺭرﺯزﻣﻴﺔ ‪ ٣‬ﺣﺎﻻﺕت ﺗﺒﻌﺎ ﻟﻤﻮﻗﻊ ﺍاﻟﺤﻞ‬
‫‪Best Case Scenario‬‬
‫ﺍاﺫذﺍا ﻛﺎﻥن ﻣﻮﻗﻊ ﺍاﻟﺤﻞ ﻗﺮﻳﺐ ﺟﺪﺍا ﻣﻦ ﺍاﻟﺨﻄﻮﺍاﺕت ﺍاﻻﻭوﻟﻰ ﻟﻠﺨﻮﺍاﺭرﺯزﻣﻴﺔ‬
‫
‬
‫‪Medium Case Scenario‬‬
‫ﺍاﺫذﺍا ﻛﺎﻥن ﻣﻮﻗﻊ ﺍاﻟﺤﻞ ﻓﻲ ﻣﻨﺘﺼﻒ ﺍاﻟﺨﻄﻮﺍاﺕت‬
‫
‬
‫‪Worst Case Scenario‬‬
‫ﺍاﺫذﺍا ﻛﺎﻥن ﻣﻮﻗﻊ ﺍاﻟﺤﻞ ﻓﻲ ﻧﻬﺎﻳﺔ ﺍاﻟﺨﻄﻮﺍاﺕت‬
‫)‪O(n2‬‬
‫‪Quadratic-Time Algorithm‬‬

‫ﻋﺪﺩد ﺍاﻟﺨﻄﻮﺍاﺕت ﻟﻠﻮﺻﻮﻝل ﺍاﻟﻰ ﺍاﻟﺤﻞ ﻳﺘﻨﺎﺳﺐ ﺃأﺳﻴﴼ‬


‫‪ exponentially‬ﻣﻊ ﻋﺪﺩد ﺍاﻟﻌﻨﺎﺻﺮ‬
‫‪ ١٠‬ﻋﻨﺎﺻﺮ = ‪ ١00‬ﺧﻄﻮﺍاﺕت‬
‫ﻣﺜﺎﻝل‬
‫ ﺑﺄﺳﺘﺨﺪﺍاﻡم‬,‫ ﻣﺼﻔﻮﻓﺔ ﺛﻨﺎﺋﻴﺔ ﺍاﻻﺑﻌﺎﺩد‬,‫ﺑﻨﺎﺀء ﻣﺼﻔﻮﻓﺔ ﻣﺼﻔﻮﻓﺎﺕت‬
‫ ﻣﺘﺪﺍاﺧﻠﺘﻴﻦ‬for loop ‫ﺍاﺛﻨﻴﻦ‬

const buildSquareMatrix = (items) => {


let matrix= [];
for (let i=0, total=items.length; i < total; i++){
matrix[i] = [];
for (let j=0, total=items.length; j < total; j++)
matrix[i].push(items[j]);
}
return matrix;
};
JSLitmus.test(‘build square matrix', function() {
buildSquareMatrix(["a","b","c"]);
});
‫)‪O(log n‬‬
‫‪Logarithmic-Time Algorithm‬‬

‫ﻭوﻫﻮ ﺍاﻟﺴﻠﻮﻙك ﺍاﻟﻤﻔﻀﻞ ﻟﺪﻯى ﻣﺼﻤﻤﻲ ﺍاﻟﺨﻮﺍاﺭرﺯزﻣﻴﺎﺕت ﺣﻴﺚ ﺑﺪﻝل‬


‫ﻣﻦ ﺍاﻟﻤﺴﻴﺮ ﻋﻠﻰ ﻛﻞ ﻋﻨﺼﺮ ﺧﻄﻮﺓة ﺧﻄﻮﺓة‪ ,‬ﺗﻘﻮﻡم ﺑﺘﻘﺴﻴﻢ‬
‫ﺍاﻟﺒﻴﺎﻧﺎﺕت ﻧﺼﻔﻴﻦ ﻓﻲ ﻛﻞ ﺧﻄﻮﺓة ﻟﻠﻮﺻﻮﻝل ﺍاﻟﻰ ﺍاﻟﺤﻞ ﺑﺼﻮﺭرﺓة‬
‫ﺍاﺳﺮﻉع‬
‫ﻣﺜﺎﻝل‬
function FindItemBinarySearch(items, match) {

var low = 0,
high = items.length -1;

while (low <= high) {


mid = parseInt((low + high) / 2);

current = items[mid];

if (current > match) {


high = mid - 1;
} else if (current < match) {
low = mid + 1;
} else {
return mid;
}
}

return -1;
}
var colours = new Array ("Black", "Blue", "Brown", "Green",
"Pink", "Red", "White", "Yellow");

JSLitmus.test(‘search for item', function() {


FindItemBinarySearch(colours, "Yellow");
});
‫ﺑﺲ ﻟﻴﺶ ﺗﻌﻴﺪ ﺍاﺧﺘﺮﺍاﻉع ﺍاﻟﻌﺠﻠﺔ ؟‬
‫ﺍاﺳﺘﺨﺪﻡم ‪underscore.js‬‬

You might also like