from SoSe24.algodat.foundation import AlgoDatArray, AlgoDatValue, read_int_sequence from time import perf_counter as pfc def partition(z: AlgoDatArray, left: int, right: int) -> int: global pivot pivot.value = z[right] i = left j = right - 1 while i < j: while z[i] < pivot: i += 1 while z[j] > pivot: j -= 1 if i < j: z[i], z[j] = z[j], z[i] i += 1 j -= 1 if i==j and z[i] < pivot: i += 1 if z[i] != pivot: z[i], z[right] = z[right], z[i] return i def quick_sort(z: AlgoDatArray, left: int, right: int): if left < right: q = partition(z, left, right) quick_sort(z, left, q-1) quick_sort(z, q+1, right) pivot = AlgoDatValue(0) if __name__ == "__main__": z = read_int_sequence("../../seq0.txt") print(z, len(z)) start = pfc() quick_sort(z, 0, z.size-1) print(z) print(f"Dauer: {pfc() - start:.4f}s") AlgoDatValue.summary()