cython

Форк
0
/
libc_stdlib.pyx 
32 строки · 695.0 Байт
1
# mode: run
2

3
from libc.stdlib cimport abs as c_int_abs, qsort as libc_qsort
4

5

6
def libc_int_abs(int x):
7
    """
8
    >>> libc_int_abs(5)
9
    5
10
    >>> libc_int_abs(-5)
11
    5
12
    """
13
    return c_int_abs(x)
14

15

16
cdef int gt(const void* v1, const void* v2) noexcept nogil:
17
    return ((<int*>v1)[0] - (<int*>v2)[0])
18

19
cdef int lt(const void* v1, const void* v2) noexcept nogil:
20
    return - gt(v1, v2)
21

22
def qsort(values, direction='lt'):
23
    """
24
    >>> data = [1, 9, 3, 2, 5]
25
    >>> qsort(data, 'gt')
26
    [1, 2, 3, 5, 9]
27
    >>> qsort(data, 'lt')
28
    [9, 5, 3, 2, 1]
29
    """
30
    cdef int[5] carray = values[:5]
31
    libc_qsort(carray, 5, sizeof(int), lt if direction == 'lt' else gt)
32
    return carray
33

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.