Coverage for fixtures.py: 29%

31 statements  

« prev     ^ index     » next       coverage.py v7.6.4, created at 2024-12-24 08:16 +0100

1# (c) 2024 Martin Wendt; see https://github.com/mar10/benchman 

2# Licensed under the MIT license: https://www.opensource.org/licenses/mit-license.php 

3from random import randint 

4from typing import Any 

5 

6SMALL_RANDOM_ARRAY = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3] 

7MEDIUM_RANDOM_ARRAY = [randint(0, 100) for _ in range(100)] 

8LARGE_RANDOM_ARRAY = [randint(0, 1000) for _ in range(1000)] 

9 

10 

11def quick_sort(arr: list[Any]) -> list[Any]: 

12 if len(arr) <= 1: 

13 return [] 

14 pivot = arr[len(arr) // 2] 

15 left = [x for x in arr if x < pivot] 

16 middle = [x for x in arr if x == pivot] 

17 right = [x for x in arr if x > pivot] 

18 return quick_sort(left) + middle + quick_sort(right) 

19 

20 

21def bubble_sort(arr: list[Any]) -> None: 

22 n = len(arr) 

23 for i in range(n): 

24 for j in range(0, n - i - 1): 

25 if arr[j] > arr[j + 1]: 

26 arr[j], arr[j + 1] = arr[j + 1], arr[j] 

27 return 

28 

29 

30def insertion_sort(arr: list[Any]) -> None: 

31 for i in range(1, len(arr)): 

32 key = arr[i] 

33 j = i - 1 

34 while j >= 0 and key < arr[j]: 

35 arr[j + 1] = arr[j] 

36 j -= 1 

37 arr[j + 1] = key 

38 return 

39 

40 

41def native_sort(arr: list[Any]) -> None: 

42 arr.sort()