الفرق بين المراجعتين لصفحة: «Kotlin/collections/binarySearch»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: الدالة <code>binarySearch()</code> في لغة Kotlin}}</noinclude> | <noinclude>{{DISPLAYTITLE: الدالة <code>binarySearch()</code> في لغة Kotlin}}</noinclude> | ||
تبحث الدالة <code>binarySearch()</code> عن عنصر في المجموعة أو مجال من المجموعة ( | تبحث الدالة <code>binarySearch()</code> عن عنصر معين في المجموعة أو مجال من المجموعة ([[Kotlin/collections|Collection]]) باستخدام خوارزميَّة البحث الثنائي (binary search algorithm) وتعيد فهرس موقعه. ويجب أن تكون المجموعة مرتبَّةً وفق المُقارِن <code>comparator</code> وإلا فستكون النتيجة المعادة غير مُحدّدة. | ||
إن احتوت المصفوفة على عناصر | إن احتوت المصفوفة على عناصر متساوية، فلا يمكن التوقع أيها سيُعاد. | ||
تُعيد الدالة فهرس العنصر | تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدَّد؛ خلاف ذلك، فستعيد القيمة السالبة لنقطة الإدراج (-insertion point - 1)، وهي الفهرس حيث يجب أن يُدرج العنصر حتى تبقى المصفوفة (أو المجال المحدَّد) مرتبة وفقا للمُقارن المحدَّد <code>comparator</code>. | ||
==البنية العامة== | ==البنية العامة== | ||
سطر 16: | سطر 16: | ||
</syntaxhighlight>'''<u>بيئة التشغيل: JVM</u>''' | </syntaxhighlight>'''<u>بيئة التشغيل: JVM</u>''' | ||
تبحث الدالة <code>binarySearch()</code> عن العنصر <code>element</code> في المصفوفة أو مجال | تبحث الدالة <code>binarySearch()</code> عن العنصر <code>element</code> في كامل المصفوفة التي استُدعيت معها أو في مجال محدِّد ضمنها باستخدام خوارزميَّة البحث الثنائي (binary search algorithm) وتعيد فهرس موقعه. يجب أن تكون المصفوفة مرتبة وفق المُقارِن <code>comparator</code>وإلا فستكون النتيجة غير مُحدّدة. | ||
إن احتوت المصفوفة على عناصر | إن احتوت المصفوفة على عناصر متساوية، فلا يمكن التوقع أيها سيُعاد. | ||
تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال | تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدد؛ خلا ذلك، ستعيد القيمة السالبة لنقطة الإدراج (-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 | </syntaxhighlight><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> في المجموعة ( | </syntaxhighlight>تبحث الدالة <code>binarySearch()</code> عن العنصر <code>element</code> في المجموعة ([[Kotlin/collections|Collection]]) التي استُدعيت معها أو في مجال محدِّد ضمنها باستخدام خوارزمية البحث الثنائي (binary search algorithm) وتعيد فهرس موقعه. ينبغي أن تكون المجموعة مرتبة '''ترتيبًا تصاعديًّا''' وفق المُقارِن <code>comparator</code> وإلا فستكون النتيجة غير مُحدّدة. | ||
إن احتوت المجموعة على عناصر | إن احتوت المجموعة على عناصر متساوية، فلا يمكن التوقع أيها سيُعاد. | ||
تُعدُّ القيمة العدميَّة <code>null</code> أصغر من أي عنصر آخر غير معدوم. | |||
تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال | تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدَّد؛ خلا ذلك، ستعيد القيمة السالبة لنقطة الإدراج (-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> | </syntaxhighlight><syntaxhighlight lang="kotlin"> | ||
fun <T> List<T>.binarySearch( | fun <T> List<T>.binarySearch( | ||
element: T, | element: T, | ||
سطر 95: | سطر 89: | ||
</syntaxhighlight>'''<u>بيئة التشغيل: JS</u>''' | </syntaxhighlight>'''<u>بيئة التشغيل: JS</u>''' | ||
تبحث الدالة <code>binarySearch()</code> عن العنصر <code>element</code> في المجموعة ( | تبحث الدالة <code>binarySearch()</code> عن العنصر <code>element</code> في المجموعة ([[Kotlin/collections|Collection]]) التي استُدعيت معها أو في مجال محدِّد ضمنها باستخدام خوارزمية البحث الثنائي (binary search algorithm) وتعيد فهرس موقعه. ينبغي أن تكون المجموعة مرتبة '''ترتيبًا تصاعديًّا''' وفق المُقارِن <code>comparator</code> وإلا فستكون النتيجة غير مُحدّدة. | ||
إن احتوت المجموعة على عناصر | إن احتوت المجموعة على عناصر متساوية، فلا يمكن التوقع أيها سيُعاد. | ||
تُعدُّ القيمة العدميَّة <code>null</code> أصغر من أي عنصر آخر غير معدوم. | |||
تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال | تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدَّد؛ خلا ذلك، ستعيد القيمة السالبة لنقطة الإدراج (-insertion point - 1)، وهي الفهرس حيث يجب أن يُدرج العنصر حتى تبقى المصفوفة (أو المجال المحدَّد) مرتبة وفقا للمُقارن المحدَّد <code>comparator</code>. | ||
==القيم المعادة== | ==القيم المعادة== | ||
فهرس العنصر المبحوث عنه | تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدَّد؛ خلا ذلك، ستعيد القيمة السالبة لنقطة الإدراج (-insertion point - 1)، وهي الفهرس حيث يجب أن يُدرج العنصر حتى تبقى المصفوفة (أو المجال المحدَّد) مرتبة وفقا للمُقارن المحدد <code>comparator</code>. | ||
==أمثلة== | ==أمثلة== | ||
===استخدام الدالة <code>()binarySearch</code> للبحث عن عنصر في | ===استخدام الدالة <code>()binarySearch</code> للبحث عن عنصر في قائمة=== | ||
تعرِّف الشيفرة الآتية قائمة باسم <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') | ||
سطر 114: | سطر 108: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===استخدام الدالة <code>()binarySearch</code> للبحث عن عنصر في مجال من | ===استخدام الدالة <code>()binarySearch</code> للبحث عن عنصر في مجال من قائمة=== | ||
تعرِّف الشيفرة الآتية قائمة باسم <code>list</code> مكونة من خمسة حروف <code>()listOf</code> ثمَّ تبحث في مجال محدَّد يبدأ من العنصر ذي الفهرس 1 (أي <code>fromIndex = 1</code>) وينتهي عند العنصر ذي الفهرس 3 (أي <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') | ||
سطر 123: | سطر 117: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==انظر أيضًا== | ==انظر أيضًا== | ||
*<code>[[Kotlin/collections/contains|contains()]]</code>: تعيد القيمة true إن كان العنصر | *الدالة <code>[[Kotlin/collections/contains|contains()]]</code>: تعيد القيمة true إن كان العنصر المراد البحث عنه موجودًا في المصفوفة أو المجموعة التي استُدعيت معها. | ||
*صفحة المجموعة ( | *صفحة المجموعة ([[Kotlin/collections|Collection]]). | ||
==مصادر== | ==مصادر== |
مراجعة 11:33، 3 يوليو 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
.
القيم المعادة
تُعيد الدالة فهرس العنصر المبحوث عنه إن كان موجودًا في المجال المحدَّد؛ خلا ذلك، ستعيد القيمة السالبة لنقطة الإدراج (-insertion point - 1)، وهي الفهرس حيث يجب أن يُدرج العنصر حتى تبقى المصفوفة (أو المجال المحدَّد) مرتبة وفقا للمُقارن المحدد comparator
.
أمثلة
استخدام الدالة ()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).