السلطان
  1. الرئيسية
  2. الأمثلة
  3. الخوارزميات

بحث ثنائي في متجه مرتب

algorithms/binary_search.sn
عرف بحث_ثنائي(القيم: متجه عدد, المطلوب: عدد): عدد {
    دع العدد: طبيعي = الطول(القيم) مثل طبيعي;
    دع الأدنى: متغير عدد = 0;
    دع الأعلى: متغير عدد = العدد مثل عدد;
    الأعلى := الأعلى - 1;
    طالما (الأدنى <= الأعلى) {
        دع المسافة: عدد = الأعلى - الأدنى;
        دع الوسط: عدد = الأدنى + (المسافة / 2);
        دع الموضع: طبيعي = الوسط مثل طبيعي;
        دع القيمة: عدد = القيم[الموضع];
        إذا (القيمة == المطلوب) { أرجع الوسط; };
        إذا (القيمة < المطلوب) {
            الأدنى := الوسط + 1;
        } وإلا {
            الأعلى := الوسط - 1;
        };
    }
    أرجع 0 - 1;
}

عرف حالة_بحث(المطلوب: عدد): عدد {
    دع القيم: متجه عدد = [2, 5, 8, 13, 21, 34, 55, 89, 144];
    أرجع بحث_ثنائي(القيم, المطلوب);
}

عرف الرئيسية(): عدد {
    أرجع حالة_بحث(55);
}

التشغيل

بالمفسر، دون ترجمة:

./build/sultanc run examples/ar/algorithms/binary_search.sn

أو ترجمه إلى ملف تنفيذي:

./build/sultanc examples/ar/algorithms/binary_search.sn -o build/example && ./build/example

المصدر على GitHub   كل الأمثلة