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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط
 
(6 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>binarySearch()‎</code> في لغة Kotlin}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: الدالة <code>binarySearch()‎</code> في Kotlin}}</noinclude>
تبحث الدالة <code>binarySearch()‎</code> عن عنصر في المجموعة أو مجال من المجموعة (<code>[[Kotlin/collections|Collection]]</code>) التي استُدعيت عبرها باستخدام خوارزمية البحث الثنائي (binary search algorithm)، يُفترض أن تكون المجموعة مرتبة وفق المُقارِن <code>comparator</code>وإلا فستكون النتيجة غير مُحدّدة.  
+
تبحث الدالة <code>binarySearch()‎</code> عن عنصر معين في المجموعة أو مجال من المجموعة ([[Kotlin/collections|Collection]]) باستخدام خوارزميَّة البحث الثنائي (binary search algorithm) وتعيد فهرس موقعه. ويجب أن تكون المجموعة مرتبَّةً وفق المُقارِن <code>comparator</code> وإلا فستكون النتيجة المعادة غير مُحدّدة.  
  
إن احتوت المصفوفة على عناصر متساوية فلا يمكن التوقع أيها سيُعاد فهرسُه (index).
+
إن احتوت المصفوفة على عناصر متساوية، فلا يمكن التوقع أيها سيُعاد.
  
تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدد ؛ خلاف ذلك، فستعيد سالب نقطة الإدراج (‎-insertion point - 1‎). والتي هي الفهرس حيث يجب أن يُدرج العنصر، حتى تبقى المصفوفة (أو المجال المحدد من المصفوفة) مرتبة وفقا للمُقارن المحدد <code>comparator.</code>
+
تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدَّد؛ خلاف ذلك، فستعيد القيمة السالبة لنقطة الإدراج (‎-insertion point - 1‎)، وهي الفهرس حيث يجب أن يُدرج العنصر حتى تبقى المصفوفة (أو المجال المحدَّد) مرتبة وفقا للمُقارن المحدَّد <code>comparator</code>.
  
 
==البنية العامة==
 
==البنية العامة==
سطر 14: سطر 14:
 
     toIndex: Int = size
 
     toIndex: Int = size
 
): Int
 
): Int
</syntaxhighlight>'''<u>بيئة التشغيل: JVM</u>'''
+
</syntaxhighlight>'''بيئة التشغيل:''' JVM
  
تبحث الدالة <code>binarySearch()‎</code> عن العنصر <code>element</code> في المصفوفة أو مجال من المصفوفة التي استُدعيت عبرها باستخدام خوارزمية البحث الثنائي (binary search algorithm)، يُفترض أن تكون المصفوفة مرتبة وفق المُقارِن <code>comparator</code>وإلا فستكون النتيجة غير مُحدّدة.
+
تبحث الدالة <code>binarySearch()‎</code> عن العنصر <code>element</code> في كامل المصفوفة التي استُدعيت معها أو في مجال محدِّد ضمنها باستخدام خوارزميَّة البحث الثنائي (binary search algorithm) وتعيد فهرس موقعه. يجب أن تكون المصفوفة مرتبة وفق المُقارِن <code>comparator</code> وإلا فستكون النتيجة غير مُحدّدة.
  
إن احتوت المصفوفة على عناصر متساوية فلا يمكن التوقع أيها سيُعاد فهرسُه (index).
+
إن احتوت المصفوفة على عناصر متساوية، فلا يمكن التوقع أيها سيُعاد.
  
تُعيد الدالة فهرس العنصر  المبحوث عنه إن كان موجودًا في المجال المحدد ؛ خلاف ذلك، فستعيد سالب نقطة الإدراج (‎-insertion point - 1‎). والتي هي الفهرس حيث يجب أن يُدرج العنصر، حتى تبقى المصفوفة (أو المجال المحدد من المصفوفة) مرتبة وفقا للمُقارن المحدد <code>comparator.</code><syntaxhighlight lang="kotlin">
+
تُعيد الدالة فهرس العنصر  المبحوث عنه إن كان موجودًا في المجال المحدد؛ خلا ذلك، ستعيد القيمة السالبة لنقطة الإدراج (‎-insertion point - 1‎)، وهي الفهرس حيث يجب أن يُدرج العنصر حتى تبقى المصفوفة (أو المجال المحدَّد) مرتبة وفقا للمُقارن المحدَّد <code>comparator</code>.<syntaxhighlight lang="kotlin">
 
fun <T> Array<out T>.binarySearch(
 
fun <T> Array<out T>.binarySearch(
 
     element: T,  
 
     element: T,  
سطر 61: سطر 61:
 
     toIndex: Int = size
 
     toIndex: Int = size
 
): Int
 
): Int
</syntaxhighlight>'''<u>بيئة التشغيل: JVM</u>'''
+
</syntaxhighlight><syntaxhighlight lang="kotlin">
 
 
تبحث الدالة <code>binarySearch()‎</code> عن العنصر <code>element</code> في المصفوفة أو مجال من المصفوفة التي استُدعيت عبرها باستخدام خوارزمية البحث الثنائي (binary search algorithm)، يُفترض أن تكون المصفوفة مرتبة وفق المُقارِن <code>comparator</code>وإلا فستكون النتيجة غير مُحدّدة.
 
 
 
إن احتوت المصفوفة على عناصر متساوية فلا يمكن التوقع أيها سيُعاد فهرسُه (index).
 
 
 
تُعيد الدالة فهرس العنصر  المبحوث عنه إن كان موجودًا في المجال المحدد ؛ خلاف ذلك، فستعيد سالب نقطة الإدراج (‎-insertion point - 1‎). والتي هي الفهرس حيث يجب أن يُدرج العنصر، حتى تبقى المصفوفة (أو المجال المحدد من المصفوفة) مرتبة وفقا للمُقارن المحدد <code>comparator:</code><syntaxhighlight lang="kotlin">
 
 
fun <T : Comparable<T>> List<T?>.binarySearch(
 
fun <T : Comparable<T>> List<T?>.binarySearch(
 
     element: T?,  
 
     element: T?,  
سطر 73: سطر 67:
 
     toIndex: Int = size
 
     toIndex: Int = size
 
): Int
 
): Int
</syntaxhighlight>تبحث الدالة <code>binarySearch()‎</code> عن العنصر <code>element</code> في المجموعة (<code>[[Kotlin/collections|Collection]]</code>) أو مجال من المجموعة التي استُدعيت عبرها باستخدام خوارزمية البحث الثنائي (binary search algorithm)، يُفترض أن تكون المجموعة مرتبة <u>ترتيبا تصاعديا</u> وفق المُقارِن <code>comparator</code>وإلا فستكون النتيجة غير مُحدّدة.
+
</syntaxhighlight>تبحث الدالة <code>binarySearch()‎</code> عن العنصر <code>element</code> في المجموعة ([[Kotlin/collections|Collection]]) التي استُدعيت معها أو في مجال محدِّد ضمنها باستخدام خوارزمية البحث الثنائي (binary search algorithm) وتعيد فهرس موقعه. ينبغي أن تكون المجموعة مرتبة '''ترتيبًا تصاعديًّا''' وفق المُقارِن <code>comparator</code> وإلا فستكون النتيجة غير مُحدّدة.
  
إن احتوت المجموعة على عناصر متساوية فلا يمكن التوقع أيها سيُعاد فهرسُه (index).
+
إن احتوت المجموعة على عناصر متساوية، فلا يمكن التوقع أيها سيُعاد.
  
تُعد القيمة المعدومة <code>null</code> أصغر  من أي عنصر آخر غير معدوم.
+
تُعدُّ القيمة العدميَّة <code>null</code> أصغر  من أي عنصر آخر غير معدوم.
  
تُعيد الدالة فهرس العنصر  المبحوث عنه إن كان موجودًا في المجال المحدد ؛ خلاف ذلك، فستعيد سالب نقطة الإدراج (‎-insertion point - 1‎). والتي هي الفهرس حيث يجب أن يُدرج العنصر، حتى تبقى المجموعة (أو المجال المحدد من المجموعة) مرتبة وفقا للمُقارن المحدد <code>comparator.</code><syntaxhighlight lang="kotlin">
+
تُعيد الدالة فهرس العنصر  المبحوث عنه إن كان موجودًا في المجال المحدَّد؛ خلا ذلك، ستعيد القيمة السالبة لنقطة الإدراج (‎-insertion point - 1‎)، وهي الفهرس حيث يجب أن يُدرج العنصر حتى تبقى المصفوفة (أو المجال المحدَّد) مرتبة وفقا للمُقارن المحدد <code>comparator</code>.<syntaxhighlight lang="kotlin">
 
fun <T> List<T>.binarySearch(
 
fun <T> List<T>.binarySearch(
 
     element: T,  
 
     element: T,  
سطر 86: سطر 80:
 
     toIndex: Int = size
 
     toIndex: Int = size
 
): Int
 
): Int
</syntaxhighlight>'''<u>بيئة التشغيل: JVM</u>'''<syntaxhighlight lang="kotlin">
+
</syntaxhighlight><syntaxhighlight lang="kotlin">
 
fun <T> List<T>.binarySearch(
 
fun <T> List<T>.binarySearch(
 
     element: T,  
 
     element: T,  
سطر 93: سطر 87:
 
     toIndex: Int = size
 
     toIndex: Int = size
 
): Int
 
): Int
</syntaxhighlight>'''<u>بيئة التشغيل: JS</u>'''
+
</syntaxhighlight>'''بيئة التشغيل:''' JS
 +
 
 +
تبحث الدالة <code>binarySearch()‎</code> عن العنصر <code>element</code> في المجموعة ([[Kotlin/collections|Collection]]) التي استُدعيت معها أو في مجال محدِّد ضمنها باستخدام خوارزمية البحث الثنائي (binary search algorithm) وتعيد فهرس موقعه. ينبغي أن تكون المجموعة مرتبة '''ترتيبًا تصاعديًّا''' وفق المُقارِن <code>comparator</code> وإلا فستكون النتيجة غير مُحدّدة.
 +
 
 +
إن احتوت المجموعة على عناصر متساوية، فلا يمكن التوقع أيها سيُعاد.
 +
 
 +
تُعدُّ القيمة العدميَّة <code>null</code> أصغر  من أي عنصر آخر غير معدوم.
  
تبحث الدالة <code>binarySearch()‎</code> عن العنصر <code>element</code> في المجموعة (<code>[[Kotlin/collections|Collection]]</code>) أو مجال من المجموعة التي استُدعيت عبرها باستخدام خوارزمية البحث الثنائي (binary search algorithm)، يُفترض أن تكون المجموعة مرتبة <u>ترتيبا تصاعديا</u> وفق المُقارِن <code>comparator</code>وإلا فستكون النتيجة غير مُحدّدة.
+
تُعيد الدالة فهرس العنصر  المبحوث عنه إن كان موجودًا في المجال المحدَّد؛ خلا ذلك، ستعيد القيمة السالبة لنقطة الإدراج (‎-insertion point - 1‎)، وهي الفهرس حيث يجب أن يُدرج العنصر حتى تبقى المصفوفة (أو المجال المحدَّد) مرتبة وفقا للمُقارن المحدَّد <code>comparator</code>.
  
إن احتوت المجموعة على عناصر متساوية فلا يمكن التوقع أيها سيُعاد فهرسُه (index).
+
== المعاملات ==
  
تُعد القيمة المعدومة <code>null</code> أصغر  من أي عنصر آخر غير معدوم.
+
=== <code>element</code> ===
 +
العنصر المراد البحث عنه.
  
تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدد ؛ خلاف ذلك، فستعيد سالب نقطة الإدراج (‎-insertion point - 1‎). والتي هي الفهرس حيث يجب أن يُدرج العنصر، حتى تبقى المجموعة (أو المجال المحدد من المجموعة) مرتبة وفقا للمُقارن المحدد <code>comparator.</code>
+
=== <code>comparator</code> ===
 +
المقارن المستعمل في عملية الترتيب.
 +
 
 +
=== <code>fromIndex</code> ===
 +
عدد صحيح يشير إلى العنصر الذي يمثل بداية المجال المراد البحث ضمنه. القيمة الافتراضية هي: 0.
 +
 
 +
=== <code>toIndex</code> ===
 +
عدد صحيح يشير إلى العنصر الذي يمثل نهاية المجال المراد البحث ضمنه (لا يدخل هذا العنصر ضمن المجال). القيمة الافتراضية هي: <code>size</code>.
  
 
==القيم المعادة==
 
==القيم المعادة==
فهرس العنصر المبحوث عنه أو سالب نقطة الإدراج (‎-insertion point - 1‎). (انظر شرح الدالة أعلاه لمزيد من التفاصيل)
+
تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدَّد؛ خلا ذلك، ستعيد القيمة السالبة لنقطة الإدراج (‎-insertion point - 1‎)، وهي الفهرس حيث يجب أن يُدرج العنصر حتى تبقى المصفوفة (أو المجال المحدَّد) مرتبة وفقا للمُقارن المحدَّد <code>comparator</code>.
 
==أمثلة==
 
==أمثلة==
===استخدام الدالة <code>()binarySearch</code> للبحث عن عنصر في لائحة===
+
استعمال الدالة <code>()binarySearch</code> البحث عن عنصر في قائمة:<syntaxhighlight lang="kotlin">
تعرف الشيفرة الآتية لائحة باسم <code>list</code> مكونة من خمسة حروف <code>()listOf</code>، ثم تبحث في اللائحة عن الحرف <code>'d'</code> باستخدام الدالة <code>()binarySearch</code>  وتطبع الناتج:<syntaxhighlight lang="kotlin">
 
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
val list = listOf('a', 'b', 'c', 'd', 'e')
+
    val list = listOf('a', 'b', 'c', 'd', 'e')
  
println(list.binarySearch('d')) // 3
+
    println(list.binarySearch('d')) // 3
 
}
 
}
</syntaxhighlight>
+
</syntaxhighlight>استعمال الدالة <code>()binarySearch</code> البحث عن عنصر في مجال محدد في قائمة:<syntaxhighlight lang="kotlin">
===استخدام الدالة <code>()binarySearch</code> للبحث عن عنصر في مجال من لائحة===
 
تعرف الشيفرة الآتية لائحة باسم <code>list</code> مكونة من خمسة حروف <code>()listOf</code>، ثم تبحث في المجال المحدد من الفهرس <code>1</code> (<code>fromIndex = 1</code>)  إلى الفهرس <code>3</code> (<code>toIndex = 3</code>) عن الحرف <code>'d'</code> باستخدام الدالة <code>()binarySearch</code>  وتطبع الناتج:<syntaxhighlight lang="kotlin">
 
 
fun main(args: Array<String>) {
 
fun main(args: Array<String>) {
val list = listOf('a', 'b', 'c', 'd', 'e')
+
    val list = listOf('a', 'b', 'c', 'd', 'e')
  
println(list.binarySearch('d',fromIndex = 1 ,toIndex = 3)) // -4
+
    println(list.binarySearch('d', fromIndex = 1, toIndex = 3)) // -4
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
==انظر أيضًا==
 
==انظر أيضًا==
*<code>[[Kotlin/collections/contains|contains()]]</code>‎: تعيد القيمة true إن كان العنصر المبحوث عنه موجودا في المصفوفة أو المجموعة التي استُدعيت عبرها.
+
*الدالة <code>[[Kotlin/collections/contains|contains()]]</code>‎: تعيد القيمة true إن كان العنصر المراد البحث عنه موجودًا في المصفوفة أو المجموعة التي استُدعيت معها.  
*صفحة المجموعة (<code>[[Kotlin/collections|Collection]]</code>).  
 
  
 
==مصادر==
 
==مصادر==
*[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/binary-search.html الدالة  binarySearch()‎ في التوثيق الرسميّ للمكتبة القياسيّة في لغة 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 إن كان العنصر المراد البحث عنه موجودًا في المصفوفة أو المجموعة التي استُدعيت معها.

مصادر