1. def insertionSort(arr):
    2. for i in range(1, len(arr)):
    3. key = arr[i]
    4. j = i - 1
    5. while j >= 0 and key < arr[j]:
    6. arr[j + 1] = arr[j]
    7. j -= 1
    8. arr[j + 1] = key
    9. arr = [1,9,6,5,3,46]
    10. insertionSort(arr)
    11. for i in range(len(arr)):
    12. print("%d" % arr[i])
    13. def harfSearch(array, key, low, high):
    14. mid = int((low+high)/2)
    15. if key == array[mid]:
    16. return array[mid]
    17. if low > high:
    18. return False
    19. if key < array[mid]:
    20. return harfSearch(array, key, low, mid-1)
    21. if key > array[mid]:
    22. return harfSearch(array, key, mid+1, high)
    23. if __name__ == "__main__":
    24. array = [4, 13, 9, 6, 5, 55, 65, 76, 97]
    25. ret = harfSearch(array, 76, 0, len(array)-1)
    26. print(ret)
    27. def k_small(self, matrix: List[List[int]], k: int) -> int:
    28. def search(mid, n):
    29. i, j = n - 1, 0
    30. count = 0
    31. while i >= 0 and j < n:
    32. if matrix[i][j] <= mid:
    33. count += (i + 1)
    34. j += 1
    35. else:
    36. i -= 1
    37. return count >= k
    38. n = len(matrix)
    39. left, right = matrix[0][0], matrix[n - 1][n - 1]
    40. while left < right:
    41. mid = left + (right - left) // 2
    42. if search(mid, n):
    43. right = mid
    44. else:
    45. left = mid + 1
    46. return left