الفرق بين المراجعتين ل"Kotlin/collections/binarySearch"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>binarySearch()‎</code> في لغة Kotlin}}</noinclude> تعيد الدالة <code>binarySearch()‎</code> قاموسً...')
 
ط
 
(7 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>binarySearch()‎</code> في لغة Kotlin}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: الدالة <code>binarySearch()‎</code> في Kotlin}}</noinclude>
تعيد الدالة <code>binarySearch()‎</code> قاموسًا متغيرا (mutable map) يحتوي ناتج تمرير عناصر المصفوفة أو المجموعة (<code>[[Kotlin/collections|Collection]]</code>) إلى الدالة <code>valueTransform</code> مُفهرسة بناتج تمرير عناصر المصفوفة أو المجموعة إلى الدالة <code>keySelector</code>.  
+
تبحث الدالة <code>binarySearch()‎</code> عن عنصر معين في المجموعة أو مجال من المجموعة ([[Kotlin/collections|Collection]]) باستخدام خوارزميَّة البحث الثنائي (binary search algorithm) وتعيد فهرس موقعه. ويجب أن تكون المجموعة مرتبَّةً وفق المُقارِن <code>comparator</code> وإلا فستكون النتيجة المعادة غير مُحدّدة.
 +
 
 +
إن احتوت المصفوفة على عناصر متساوية، فلا يمكن التوقع أيها سيُعاد.
 +
 
 +
تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدَّد؛ خلاف ذلك، فستعيد القيمة السالبة لنقطة الإدراج (‎-insertion point - 1‎)، وهي الفهرس حيث يجب أن يُدرج العنصر حتى تبقى المصفوفة (أو المجال المحدَّد) مرتبة وفقا للمُقارن المحدَّد <code>comparator</code>.
  
ان كان لعنصرين نفس المفتاح (key) بعد تطبيق الدالة<code>keySelector</code> فإن الأخير هو الذي سيُضاف إلى القاموس.
 
 
==البنية العامة==
 
==البنية العامة==
في حال استدعاء الدالة <code>binarySearch()‎</code>عبر مصفوفة فستعيد القاموس المتغير <code>destination</code> مفاتيحه توفرها الدالة <code>keySelector()‎</code> مُطبقةً على عناصر المصفوفة وقيمه هي عناصر المصفوفة:<syntaxhighlight lang="kotlin">
+
<syntaxhighlight lang="kotlin">
inline fun <T, K, M : MutableMap<in K, in T>> Array<out T>.associateByTo(
+
fun <T> Array<out T>.binarySearch(
     destination: M,
+
     element: T,  
    keySelector: (T) -> K
+
     comparator: Comparator<in T>,  
): M
+
     fromIndex: Int = 0,  
inline fun <K, M : MutableMap<in K, in Byte>> ByteArray.associateByTo(
+
     toIndex: Int = size
     destination: M,
+
): Int
    keySelector: (Byte) -> K
+
</syntaxhighlight>'''بيئة التشغيل:''' JVM
): M
+
 
inline fun <K, M : MutableMap<in K, in Short>> ShortArray.associateByTo(
+
تبحث الدالة <code>binarySearch()‎</code> عن العنصر <code>element</code> في كامل المصفوفة التي استُدعيت معها أو في مجال محدِّد ضمنها باستخدام خوارزميَّة البحث الثنائي (binary search algorithm) وتعيد فهرس موقعه. يجب أن تكون المصفوفة مرتبة وفق المُقارِن <code>comparator</code> وإلا فستكون النتيجة غير مُحدّدة.
    destination: M,  
+
 
     keySelector: (Short) -> K
+
إن احتوت المصفوفة على عناصر متساوية، فلا يمكن التوقع أيها سيُعاد.
): M
+
 
inline fun <K, M : MutableMap<in K, in Int>> IntArray.associateByTo(
+
تُعيد الدالة فهرس العنصر  المبحوث عنه إن كان موجودًا في المجال المحدد؛ خلا ذلك، ستعيد القيمة السالبة لنقطة الإدراج (‎-insertion point - 1‎)، وهي الفهرس حيث يجب أن يُدرج العنصر حتى تبقى المصفوفة (أو المجال المحدَّد) مرتبة وفقا للمُقارن المحدَّد <code>comparator</code>.<syntaxhighlight lang="kotlin">
    destination: M,  
+
fun <T> Array<out T>.binarySearch(
     keySelector: (Int) -> K
+
     element: T,  
): M
+
     fromIndex: Int = 0,  
inline fun <K, M : MutableMap<in K, in Long>> LongArray.associateByTo(
+
     toIndex: Int = size
    destination: M,
+
): Int
    keySelector: (Long) -> K
+
fun ByteArray.binarySearch(
): M
+
     element: Byte,  
inline fun <K, M : MutableMap<in K, in Float>> FloatArray.associateByTo(
+
     fromIndex: Int = 0,  
    destination: M,
+
     toIndex: Int = size
    keySelector: (Float) -> K
+
): Int
): M
+
fun ShortArray.binarySearch(
inline fun <K, M : MutableMap<in K, in Double>> DoubleArray.associateByTo(
+
     element: Short,  
    destination: M,
+
     fromIndex: Int = 0,  
    keySelector: (Double) -> K
+
     toIndex: Int = size
): M
+
): Int
inline fun <K, M : MutableMap<in K, in Boolean>> BooleanArray.associateByTo(
+
fun IntArray.binarySearch(
    destination: M,
+
     element: Int,  
    keySelector: (Boolean) -> K
+
     fromIndex: Int = 0,  
): M
+
     toIndex: Int = size
inline fun <K, M : MutableMap<in K, in Char>> CharArray.associateByTo(
+
): Int
    destination: M,
+
fun LongArray.binarySearch(
    keySelector: (Char) -> K
+
     element: Long,  
): M
+
     fromIndex: Int = 0,  
</syntaxhighlight>في حال استدعاء الدالة <code>associateByTo()‎</code>عبر مصفوفة فستعيدالقاموس المتغير <code>destination</code> مفاتيحه توفرها الدالة <code>keySelector()‎</code> مُطبقةً على عناصر المصفوفة وقيمه توفرها الدالة <code>valueTransform()‎</code> مُطبقةً على عناصر المصفوفة:<syntaxhighlight lang="kotlin">
+
     toIndex: Int = size
inline fun <T, K, V, M : MutableMap<in K, in V>> Array<out T>.associateByTo(
+
): Int
     destination: M,  
+
fun FloatArray.binarySearch(
     keySelector: (T) -> K,  
+
     element: Float,  
     valueTransform: (T) -> V
+
     fromIndex: Int = 0,  
): M
+
     toIndex: Int = size
inline fun <K, V, M : MutableMap<in K, in V>> ByteArray.associateByTo(
+
): Int
     destination: M,  
+
fun DoubleArray.binarySearch(
     keySelector: (Byte) -> K,  
+
     element: Double,  
     valueTransform: (Byte) -> V
+
     fromIndex: Int = 0,  
): M
+
     toIndex: Int = size
inline fun <K, V, M : MutableMap<in K, in V>> ShortArray.associateByTo(
+
): Int
     destination: M,  
+
fun CharArray.binarySearch(
     keySelector: (Short) -> K,  
+
     element: Char,  
     valueTransform: (Short) -> V
+
     fromIndex: Int = 0,  
): M
+
     toIndex: Int = size
inline fun <K, V, M : MutableMap<in K, in V>> IntArray.associateByTo(
+
): Int
     destination: M,  
+
</syntaxhighlight><syntaxhighlight lang="kotlin">
     keySelector: (Int) -> K,  
+
fun <T : Comparable<T>> List<T?>.binarySearch(
     valueTransform: (Int) -> V
+
     element: T?,  
): M
+
     fromIndex: Int = 0,  
inline fun <K, V, M : MutableMap<in K, in V>> LongArray.associateByTo(
+
     toIndex: Int = size
     destination: M,  
+
): Int
     keySelector: (Long) -> K,  
+
</syntaxhighlight>تبحث الدالة <code>binarySearch()‎</code> عن العنصر <code>element</code> في المجموعة ([[Kotlin/collections|Collection]]) التي استُدعيت معها أو في مجال محدِّد ضمنها باستخدام خوارزمية البحث الثنائي (binary search algorithm) وتعيد فهرس موقعه. ينبغي أن تكون المجموعة مرتبة '''ترتيبًا تصاعديًّا''' وفق المُقارِن <code>comparator</code> وإلا فستكون النتيجة غير مُحدّدة.
     valueTransform: (Long) -> V
+
 
): M
+
إن احتوت المجموعة على عناصر متساوية، فلا يمكن التوقع أيها سيُعاد.
inline fun <K, V, M : MutableMap<in K, in V>> FloatArray.associateByTo(
+
 
     destination: M,  
+
تُعدُّ القيمة العدميَّة <code>null</code> أصغر  من أي عنصر آخر غير معدوم.
     keySelector: (Float) -> K,  
+
 
     valueTransform: (Float) -> V
+
تُعيد الدالة فهرس العنصر  المبحوث عنه إن كان موجودًا في المجال المحدَّد؛ خلا ذلك، ستعيد القيمة السالبة لنقطة الإدراج (‎-insertion point - 1‎)، وهي الفهرس حيث يجب أن يُدرج العنصر حتى تبقى المصفوفة (أو المجال المحدَّد) مرتبة وفقا للمُقارن المحدد <code>comparator</code>.<syntaxhighlight lang="kotlin">
): M
+
fun <T> List<T>.binarySearch(
inline fun <K, V, M : MutableMap<in K, in V>> DoubleArray.associateByTo(
+
    element: T,  
     destination: M,  
+
    comparator: Comparator<in T>,  
     keySelector: (Double) -> K,  
+
    fromIndex: Int = 0,
     valueTransform: (Double) -> V
+
    toIndex: Int = size
): M
+
): Int
inline fun <K, V, M : MutableMap<in K, in V>> BooleanArray.associateByTo(
+
</syntaxhighlight><syntaxhighlight lang="kotlin">
     destination: M,  
+
fun <T> List<T>.binarySearch(
     keySelector: (Boolean) -> K,  
+
     element: T,  
     valueTransform: (Boolean) -> V
+
     comparator: Comparator<in T>,
): M
+
    fromIndex: Int = 0,
inline fun <K, V, M : MutableMap<in K, in V>> CharArray.associateByTo(
+
    toIndex: Int = size
     destination: M,  
+
): Int
     keySelector: (Char) -> K,  
+
</syntaxhighlight>'''بيئة التشغيل:''' JS
     valueTransform: (Char) -> V
+
 
): M
+
تبحث الدالة <code>binarySearch()‎</code> عن العنصر <code>element</code> في المجموعة ([[Kotlin/collections|Collection]]) التي استُدعيت معها أو في مجال محدِّد ضمنها باستخدام خوارزمية البحث الثنائي (binary search algorithm) وتعيد فهرس موقعه. ينبغي أن تكون المجموعة مرتبة '''ترتيبًا تصاعديًّا''' وفق المُقارِن <code>comparator</code> وإلا فستكون النتيجة غير مُحدّدة.
</syntaxhighlight>في حال استدعاء الدالة <code>associateByTo()‎</code>عبر مجموعة (<code>[[Kotlin/collections|Collection]]</code>)  فستعيد القاموس المتغير <code>destination</code> مفاتيحه توفرها الدالة <code>keySelector()‎</code> مُطبقةً على عناصر المجموعة وقيمها هي عناصر المجموعة:<syntaxhighlight lang="kotlin">
+
 
inline fun <T, K, M : MutableMap<in K, in T>> Iterable<T>.associateByTo(
+
إن احتوت المجموعة على عناصر متساوية، فلا يمكن التوقع أيها سيُعاد.
     destination: M,  
+
 
     keySelector: (T) -> K
+
تُعدُّ القيمة العدميَّة <code>null</code> أصغر  من أي عنصر آخر غير معدوم.
):
+
 
</syntaxhighlight>في حال استدعاء الدالة <code>associateByTo()‎</code>عبر مجموعة (<code>[[Kotlin/collections|Collection]]</code>) فستعيد القاموس المتغير <code>destination</code> مفاتيحه توفرها الدالة <code>keySelector()‎</code> مُطبقةً على عناصر المجموعة وقيمه توفرها الدالة <code>valueTransform()‎</code> مُطبقةً على عناصر المجموعة:<syntaxhighlight lang="kotlin">
+
تُعيد الدالة فهرس العنصر  المبحوث عنه إن كان موجودًا في المجال المحدَّد؛ خلا ذلك، ستعيد القيمة السالبة لنقطة الإدراج (‎-insertion point - 1‎)، وهي الفهرس حيث يجب أن يُدرج العنصر حتى تبقى المصفوفة (أو المجال المحدَّد) مرتبة وفقا للمُقارن المحدَّد <code>comparator</code>.
inline fun <T, K, V, M : MutableMap<in K, in V>> Iterable<T>.associateByTo(
+
 
    destination: M,
+
== المعاملات ==
    keySelector: (T) -> K,
+
 
    valueTransform: (T) -> V
+
=== <code>element</code> ===
): M
+
العنصر المراد البحث عنه.
</syntaxhighlight>يُلاحَظ وجود الكلمة المفتاحية <code>inline</code> للدلالة على أن هذه الدالة مباشرة، وللمزيد من التفاصيل راجع <nowiki/>[[Kotlin/inline functions|توثيق الدوال المباشرة (inline functions)]].
+
 
 +
=== <code>comparator</code> ===
 +
المقارن المستعمل في عملية الترتيب.
 +
 
 +
=== <code>fromIndex</code> ===
 +
عدد صحيح يشير إلى العنصر الذي يمثل بداية المجال المراد البحث ضمنه. القيمة الافتراضية هي: 0.
 +
 
 +
=== <code>toIndex</code> ===
 +
عدد صحيح يشير إلى العنصر الذي يمثل نهاية المجال المراد البحث ضمنه (لا يدخل هذا العنصر ضمن المجال). القيمة الافتراضية هي: <code>size</code>.
  
 
==القيم المعادة==
 
==القيم المعادة==
قاموس. (انظر شرح الدالة أعلاه لمزيد من التفاصيل)
+
تُعيد الدالة فهرس العنصر  المبحوث عنه إن كان موجودًا في المجال المحدَّد؛ خلا ذلك، ستعيد القيمة السالبة لنقطة الإدراج (‎-insertion point - 1‎)، وهي الفهرس حيث يجب أن يُدرج العنصر حتى تبقى المصفوفة (أو المجال المحدَّد) مرتبة وفقا للمُقارن المحدَّد <code>comparator</code>.
 
==أمثلة==
 
==أمثلة==
===استخدام الدالة <code>()binarySearch</code> مع اللوائح بتمرير دالة واحدة===
+
استعمال الدالة <code>()binarySearch</code> البحث عن عنصر في قائمة:<syntaxhighlight lang="kotlin">
تعرف الشيفرة الآتية لائحة باسم <code>list</code> مكونة من أربعة أعداد باستخدام الدالة <code>()listOf</code>، ثم تنشئ قاموسًا متغيرًا باسم <code>map</code> بتمرير الدالة <code>()func</code> (التي تضرب الأعداد في 4) إلى<code>()associateByTo</code>  ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
 
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
     val list = listOf(1,2,3,4)
+
     val list = listOf('a', 'b', 'c', 'd', 'e')
    val map = mutableMapOf<Int, Int>()
 
    val func: (Int) -> Int = {it*4}
 
  
     list.associateByTo(map,func)
+
     println(list.binarySearch('d')) // 3
 
 
    println(map) // {4=1, 8=2, 12=3, 16=4}
 
 
}
 
}
</syntaxhighlight>
+
</syntaxhighlight>استعمال الدالة <code>()binarySearch</code> البحث عن عنصر في مجال محدد في قائمة:<syntaxhighlight lang="kotlin">
===استخدام الدالة <code>()binarySearch</code> مع اللوائح بتمرير دالتين===
 
تعرف الشيفرة الآتية لائحة باسم <code>list</code> مكونة من ثلاثة أحرف باستخدام الدالة <code>()listOf</code>، ثم تنشئ قاموسًا متغيرًا باسم <code>map</code> بتمرير الدالة <code>()</code><code>func</code> (التي تضرب الأعداد في 4) والدالة<code>()func2</code> (التي تضيف 4  إلى العدد الممرر إليها) إلى<code>()associateByTo</code>  ثم تطبع الناتج:<syntaxhighlight lang="kotlin">
 
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
     val list = listOf(1,2,3,4)
+
     val list = listOf('a', 'b', 'c', 'd', 'e')
    val map = mutableMapOf<Int, Int>()
 
    val func: (Int) -> Int = {it*4}
 
    val func2: (Int) -> Int = {it + 4}
 
  
     list.associateByTo(map,func,func2)
+
     println(list.binarySearch('d', fromIndex = 1, toIndex = 3)) // -4
 
 
    println(map) // {4=5, 8=6, 12=7, 16=8}
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
==انظر أيضًا==
 
==انظر أيضًا==
*<code>[[Kotlin/collections/associateBy|associateBy()]]</code>‎: تعيد قاموسًا (map).
+
*الدالة <code>[[Kotlin/collections/contains|contains()]]</code>‎: تعيد القيمة true إن كان العنصر المراد البحث عنه موجودًا في المصفوفة أو المجموعة التي استُدعيت معها.  
*<code>[[Kotlin/collections/associate|associate()]]</code>‎: تعيد قاموسًا (map).
 
*<code>[[Kotlin/collections/asList|asList()]]</code>‎: تعيد لائحة والتي تُغلّف المصفوفة الاصلية.
 
 
 
* <code>[[Kotlin/collections/asIterable|asIterable()]]</code>‎: تُنشئ نسخة تكرارية (Iterable instance) والتي تُغلّف المصفوفة الاصلية وتعيد عناصرها عندما تُستخدم في حلقات التكرار (مثل<code>[[Kotlin/control flow#.D8.AA.D8.B9.D8.A8.D9.8A.D8.B1 for|for]]</code>).
 
  
 
==مصادر==
 
==مصادر==
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/associate-by-to.html الدالة  associateByTo()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
+
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/binary-search.html الدالة binarySearch()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Functions]]
+
[[تصنيف:Kotlin Function]]
 +
[[تصنيف:Kotlin Collection]]

المراجعة الحالية بتاريخ 07:27، 8 سبتمبر 2018

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

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

تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدَّد؛ خلاف ذلك، فستعيد القيمة السالبة لنقطة الإدراج (‎-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 وإلا فستكون النتيجة غير مُحدّدة.

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

تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدد؛ خلا ذلك، ستعيد القيمة السالبة لنقطة الإدراج (‎-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
fun <T : Comparable<T>> List<T?>.binarySearch(
    element: T?, 
    fromIndex: Int = 0, 
    toIndex: Int = size
): Int

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

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

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

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

fun <T> List<T>.binarySearch(
    element: T, 
    comparator: Comparator<in T>, 
    fromIndex: Int = 0, 
    toIndex: Int = size
): Int
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 وإلا فستكون النتيجة غير مُحدّدة.

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

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

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

المعاملات

element

العنصر المراد البحث عنه.

comparator

المقارن المستعمل في عملية الترتيب.

fromIndex

عدد صحيح يشير إلى العنصر الذي يمثل بداية المجال المراد البحث ضمنه. القيمة الافتراضية هي: 0.

toIndex

عدد صحيح يشير إلى العنصر الذي يمثل نهاية المجال المراد البحث ضمنه (لا يدخل هذا العنصر ضمن المجال). القيمة الافتراضية هي: size.

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

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

أمثلة

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

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

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

استعمال الدالة ()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 إن كان العنصر المراد البحث عنه موجودًا في المصفوفة أو المجموعة التي استُدعيت معها.

مصادر