from ctypes import * libc = cdll.msvcrt qsort = libc.qsort qsort.restype = None def py_cmp_func(a, b): print ("py_cmp_func", a[0], b[0], a[0] - b[0]) return a[0] - b[0] print ("Integer Array") IntArray5 = c_int * 5 ia = IntArray5(5, 1, 7, 33, 19) for i in range(len(ia)): print(ia[i]) CMPFUNC = CFUNCTYPE(c_int, POINTER(c_int), POINTER(c_int)) cmp_func = CMPFUNC(py_cmp_func) qsort(ia, len(ia), sizeof(c_int), cmp_func) for i in range(len(ia)): print(ia[i]) print("") print ("Double Array") DblArray5 = c_double * 5 da = DblArray5(5, 1.2, 7, 33, 19) for i in range(len(da)): print(da[i]) CMPFUNC = CFUNCTYPE(c_double, POINTER(c_double), POINTER(c_double)) cmp_func = CMPFUNC(py_cmp_func) qsort(da, len(da), sizeof(c_double), cmp_func) for i in range(len(da)): print(da[i])