المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : خوارزمية المشط


ثامر أبو بلقيس
04-09-2014, 09:00 PM
بسم الله الرحمن الرحيم

قرأت هاته الخوارزمية - و هي خوارزمية المشط - و المتعلقة بالترتيب
أعجبتني كثيرا كونها أقوى من خوارزمية الفقاعات
فأحببت كتابتها قد يستفاد منها يوما
في global functions نزرع :
function combsort(t)
local gapd, gap, swaps = 1.2473, #t, 0
while gap + swaps > 1 do
local k = 0
swaps = 0
if gap > 1 then gap = math.floor(gap / gapd) end
for k = 1, #t - gap do
if t[k] > t[k + gap] then
t[k], t[k + gap], swaps = t[k + gap], t[k], swaps + 1
end
end
end
return t
end

و لاستغلال الكود نضع في الزر :
list = { 4, 2, 5, 7, 1, 12, 6, 8, 11, 9, 10, 3}
combsort(list)
p ="";
for i, j in pairs(list) do
p=p..j..","
end
result = Dialog.Message("Notice", p);

ونعاين كيف سيتم ترتيب عناصر المجموعة

سلام :abc_138:

فرح صالحي
04-09-2014, 10:45 PM
السلام عليكم ورحمة الله وبركاته
جازاك الله خيرا كثيرا
موفق بإذن الله :abc_152:... لك مني أجمل تحية .

ياسرهتهت
04-09-2014, 11:22 PM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
شكر لك استاذنا الكريم / ثامر
علي هذه الخوارزمية الجيدة والمفيدة

-----------------------------
لكن عندي استفسار ؟؟
لماذا عندما جعلت القائمة متغير لم تعطيني الترتيب الصحيح؟؟
اين الخطأ ؟؟

هذا الكود المستخدم
-------------------------------------------------

ip1 = Input.GetText("Input1");
ip2 = Input.GetText("Input2");
ip3 = Input.GetText("Input3");
ip4 = Input.GetText("Input4");
ip5 = Input.GetText("Input5");
ip6 = Input.GetText("Input6");

list = { ip1, ip2,ip3, ip4, ip5, ip6}

combsort(list)
p ="";
for i, j in pairs(list) do
p=p..j..","
end
result = Dialog.Message("Notice", p);



----------------------------------------------------------------

موفق بإذن الله ... لك مني أجمل تحية .

ثامر أبو بلقيس
04-09-2014, 11:38 PM
الأستاذ ياسر علينا أن نفهم البرنامج بأن ما كتب في الانبوتات
قيم رقمية حتى يرتبها
ip1 = Input.GetText("Input1");
ip1 = String.ToNumber(ip1);
ip2 = Input.GetText("Input2");
ip2 = String.ToNumber(ip2);
ip3 = Input.GetText("Input3");
ip3 = String.ToNumber(ip3);
ip4 = Input.GetText("Input4");
ip4 = String.ToNumber(ip4);
ip5 = Input.GetText("Input5");
ip5 = String.ToNumber(ip5);
ip6 = Input.GetText("Input6");
ip6 = String.ToNumber(ip6);

list = { ip1, ip2,ip3, ip4, ip5, ip6}

combsort(list)
p ="";
for i, j in pairs(list) do
p=p..j..","
end
result = Dialog.Message("Notice", p);

ياسرهتهت
04-09-2014, 11:53 PM
شكراً لك اخي ثامر وبارك الله فيك
دائما اقع في نفس الخطأ
:abc_152::abc_152::abc_152:

ثامر أبو بلقيس
05-09-2014, 04:15 PM
السلام عليكم ورحمة الله وبركاته
جازاك الله خيرا كثيرا
موفق بإذن الله :abc_152:... لك مني أجمل تحية .

شكرا جزيلا أخي بارك الله فيك :abc_152:

أبو يوسف
05-09-2014, 05:12 PM
جزاك الله خيرا اخانا ابا بلقيس :abc_152:

ثامر أبو بلقيس
16-12-2014, 12:43 PM
مرور عطر :abc_138: