الدالة binarySearch()‎ في لغة Kotlin

من موسوعة حسوب

تبحث الدالة binarySearch()‎ عن عنصر في المجموعة أو مجال من المجموعة (Collection) التي استُدعيت عبرها باستخدام خوارزمية البحث الثنائي (binary search algorithm)، يُفترض أن تكون المجموعة مرتبة وفق المُقارِن comparatorوإلا فستكون النتيجة غير مُحدّدة.

إن احتوت المصفوفة على عناصر متساوية فلا يمكن التوقع أيها سيُعاد فهرسُه (index).

تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدد ؛ خلاف ذلك، فستعيد سالب نقطة الإدراج (‎-insertion point - 1‎). والتي هي الفهرس حيث يجب أن يُدرج العنصر، حتى تبقى المصفوفة (أو المجال المحدد من المصفوفة) مرتبة وفقا للمُقارن المحدد comparator.

البنية العامة

fun <T> Array<out T>.binarySearch(
    element: T, 
    comparator: Comparator<in T>, 
    fromIndex: Int = 0, 
    toIndex: Int = size
): Int

بيئة التشغيل: JVM

تبحث الدالة binarySearch()‎ عن العنصر element في المصفوفة أو مجال من المصفوفة التي استُدعيت عبرها باستخدام خوارزمية البحث الثنائي (binary search algorithm)، يُفترض أن تكون المصفوفة مرتبة وفق المُقارِن comparatorوإلا فستكون النتيجة غير مُحدّدة.

إن احتوت المصفوفة على عناصر متساوية فلا يمكن التوقع أيها سيُعاد فهرسُه (index).

تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدد ؛ خلاف ذلك، فستعيد سالب نقطة الإدراج (‎-insertion point - 1‎). والتي هي الفهرس حيث يجب أن يُدرج العنصر، حتى تبقى المصفوفة (أو المجال المحدد من المصفوفة) مرتبة وفقا للمُقارن المحدد comparator.

fun <T> Array<out T>.binarySearch(
    element: T, 
    fromIndex: Int = 0, 
    toIndex: Int = size
): Int
fun ByteArray.binarySearch(
    element: Byte, 
    fromIndex: Int = 0, 
    toIndex: Int = size
): Int
fun ShortArray.binarySearch(
    element: Short, 
    fromIndex: Int = 0, 
    toIndex: Int = size
): Int
fun IntArray.binarySearch(
    element: Int, 
    fromIndex: Int = 0, 
    toIndex: Int = size
): Int
fun LongArray.binarySearch(
    element: Long, 
    fromIndex: Int = 0, 
    toIndex: Int = size
): Int
fun FloatArray.binarySearch(
    element: Float, 
    fromIndex: Int = 0, 
    toIndex: Int = size
): Int
fun DoubleArray.binarySearch(
    element: Double, 
    fromIndex: Int = 0, 
    toIndex: Int = size
): Int
fun CharArray.binarySearch(
    element: Char, 
    fromIndex: Int = 0, 
    toIndex: Int = size
): Int

بيئة التشغيل: JVM

تبحث الدالة binarySearch()‎ عن العنصر element في المصفوفة أو مجال من المصفوفة التي استُدعيت عبرها باستخدام خوارزمية البحث الثنائي (binary search algorithm)، يُفترض أن تكون المصفوفة مرتبة وفق المُقارِن comparatorوإلا فستكون النتيجة غير مُحدّدة.

إن احتوت المصفوفة على عناصر متساوية فلا يمكن التوقع أيها سيُعاد فهرسُه (index).

تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدد ؛ خلاف ذلك، فستعيد سالب نقطة الإدراج (‎-insertion point - 1‎). والتي هي الفهرس حيث يجب أن يُدرج العنصر، حتى تبقى المصفوفة (أو المجال المحدد من المصفوفة) مرتبة وفقا للمُقارن المحدد comparator:

fun <T : Comparable<T>> List<T?>.binarySearch(
    element: T?, 
    fromIndex: Int = 0, 
    toIndex: Int = size
): Int

تبحث الدالة binarySearch()‎ عن العنصر element في المجموعة (Collection) أو مجال من المجموعة التي استُدعيت عبرها باستخدام خوارزمية البحث الثنائي (binary search algorithm)، يُفترض أن تكون المجموعة مرتبة ترتيبا تصاعديا وفق المُقارِن comparatorوإلا فستكون النتيجة غير مُحدّدة.

إن احتوت المجموعة على عناصر متساوية فلا يمكن التوقع أيها سيُعاد فهرسُه (index).

تُعد القيمة المعدومة null أصغر من أي عنصر آخر غير معدوم.

تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدد ؛ خلاف ذلك، فستعيد سالب نقطة الإدراج (‎-insertion point - 1‎). والتي هي الفهرس حيث يجب أن يُدرج العنصر، حتى تبقى المجموعة (أو المجال المحدد من المجموعة) مرتبة وفقا للمُقارن المحدد comparator.

fun <T> List<T>.binarySearch(
    element: T, 
    comparator: Comparator<in T>, 
    fromIndex: Int = 0, 
    toIndex: Int = size
): Int

بيئة التشغيل: JVM

fun <T> List<T>.binarySearch(
    element: T, 
    comparator: Comparator<in T>, 
    fromIndex: Int = 0, 
    toIndex: Int = size
): Int

بيئة التشغيل: JS

تبحث الدالة binarySearch()‎ عن العنصر element في المجموعة (Collection) أو مجال من المجموعة التي استُدعيت عبرها باستخدام خوارزمية البحث الثنائي (binary search algorithm)، يُفترض أن تكون المجموعة مرتبة ترتيبا تصاعديا وفق المُقارِن comparatorوإلا فستكون النتيجة غير مُحدّدة.

إن احتوت المجموعة على عناصر متساوية فلا يمكن التوقع أيها سيُعاد فهرسُه (index).

تُعد القيمة المعدومة null أصغر من أي عنصر آخر غير معدوم.

تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدد ؛ خلاف ذلك، فستعيد سالب نقطة الإدراج (‎-insertion point - 1‎). والتي هي الفهرس حيث يجب أن يُدرج العنصر، حتى تبقى المجموعة (أو المجال المحدد من المجموعة) مرتبة وفقا للمُقارن المحدد comparator.

القيم المعادة

فهرس العنصر المبحوث عنه أو سالب نقطة الإدراج (‎-insertion point - 1‎). (انظر شرح الدالة أعلاه لمزيد من التفاصيل)

أمثلة

استخدام الدالة ()binarySearch للبحث عن عنصر في لائحة

تعرف الشيفرة الآتية لائحة باسم list مكونة من خمسة حروف ()listOf، ثم تبحث في اللائحة عن الحرف 'd' باستخدام الدالة ()binarySearch وتطبع الناتج:

fun main(args: Array<String>) {
val list = listOf('a', 'b', 'c', 'd', 'e')

println(list.binarySearch('d')) // 3
}

استخدام الدالة ()binarySearch للبحث عن عنصر في مجال من لائحة

تعرف الشيفرة الآتية لائحة باسم list مكونة من خمسة حروف ()listOf، ثم تبحث في المجال المحدد من الفهرس 1 (fromIndex = 1) إلى الفهرس 3 (toIndex = 3) عن الحرف 'd' باستخدام الدالة ()binarySearch وتطبع الناتج:

fun main(args: Array<String>) {
val list = listOf('a', 'b', 'c', 'd', 'e')

println(list.binarySearch('d',fromIndex = 1 ,toIndex = 3)) // -4
}

انظر أيضًا

  • contains()‎: تعيد القيمة true إن كان العنصر المبحوث عنه موجودا في المصفوفة أو المجموعة التي استُدعيت عبرها.
  • صفحة المجموعة (Collection).

مصادر