So to me it seems that it is indeed possible to implement pure python iterator recipe that is performant and sensible for random data.
But I am having troubles to incorporate any sort of pattern beating behaviour without loosing a lot of performance.
Code for times
times = {
'isorted_sorted': [15.77, 15.78, 15.79, 15.8, 15.81, 15.82, 15.82, 15.83, 15.84, 15.85, 15.86, 15.87, 15.88, 15.88, 15.89, 15.9, 15.91, 15.92, 15.93, 15.93, 15.94, 15.95, 15.96, 15.97, 15.97, 15.98, 15.99, 16.0, 16.01, 16.02, 16.03, 16.03, 16.04, 16.05, 16.06, 16.07, 16.08, 16.08, 16.09, 16.1, 16.11, 16.12, 16.12, 16.13, 16.14, 16.15, 16.16, 16.17, 16.17, 16.18, 16.19, 16.2, 16.21, 16.22, 16.22, 16.23, 16.24, 16.25, 16.26, 16.26, 16.27, 16.28, 16.29, 16.3, 16.3, 16.31, 16.32, 16.33, 16.34, 16.34, 16.35, 16.36, 16.37, 16.38, 16.38, 16.39, 16.4, 16.41, 16.42, 16.43, 16.43, 16.44, 16.45, 16.46, 16.47, 16.47, 16.48, 16.49, 16.5, 16.5, 16.51, 16.52, 16.53, 16.54, 16.54, 16.55, 16.56, 16.57, 16.58, 16.58, 16.59],
'isorted_heap_unstable': [3.83, 4.3, 4.73, 5.15, 5.57, 5.97, 6.38, 6.78, 7.19, 7.66, 8.09, 8.53, 8.94, 9.34, 9.74, 10.13, 10.53, 10.92, 11.31, 11.7, 12.09, 12.48, 12.87, 13.25, 13.73, 14.16, 14.58, 14.97, 15.36, 15.74, 16.12, 16.5, 16.88, 17.26, 17.65, 18.03, 18.4, 18.78, 19.21, 19.62, 20.03, 20.44, 20.82, 21.2, 21.57, 21.95, 22.32, 22.7, 23.07, 23.44, 23.81, 24.18, 24.55, 24.92, 25.36, 25.77, 26.16, 26.53, 26.89, 27.25, 27.61, 27.97, 28.33, 28.69, 29.04, 29.39, 29.74, 30.09, 30.44, 30.84, 31.22, 31.59, 32.0, 32.34, 32.68, 33.02, 33.35, 33.68, 34.01, 34.34, 34.66, 34.99, 35.31, 35.62, 35.94, 36.24, 36.57, 36.93, 37.26, 37.58, 37.89, 38.18, 38.47, 38.75, 39.02, 39.28, 39.53, 39.76, 40.03, 40.23, 40.4],
# 'isorted_heap_stable': [18.02, 19.24, 20.47, 21.72, 22.89, 24.17, 25.58, 27.2, 28.78, 30.34, 31.9, 33.56, 35.12, 36.65, 38.25, 39.8, 41.32, 42.83, 44.45, 45.99, 47.51, 49.0, 50.6, 52.09, 53.58, 55.08, 56.65, 58.13, 59.58, 61.12, 62.63, 64.1, 65.56, 67.08, 68.56, 70.0, 71.43, 72.93, 74.4, 75.83, 77.25, 78.81, 80.35, 81.87, 83.37, 84.91, 86.42, 87.92, 89.41, 90.91, 92.37, 93.81, 95.26, 96.74, 98.17, 99.59, 100.99, 102.41, 103.8, 105.16, 106.52, 107.9, 109.27, 110.6, 111.94, 113.27, 114.6, 115.89, 117.17, 118.49, 119.81, 121.08, 122.38, 123.62, 124.86, 126.1, 127.3, 128.5, 129.67, 130.86, 132.03, 133.15, 134.26, 135.35, 136.42, 137.52, 138.55, 139.56, 140.53, 141.46, 142.44, 143.39, 144.27, 145.1, 145.89, 146.66, 147.4, 148.16, 148.91, 149.55, 150.07],
# 'isorted_merge': [6.04, 128.75, 130.97, 133.22, 135.45, 138.38, 141.47, 144.45, 147.48, 150.67, 153.82, 157.31, 160.82, 164.41, 167.98, 171.55, 175.13, 178.67, 182.26, 186.29, 189.98, 194.03, 198.47, 202.77, 206.72, 210.51, 214.27, 217.89, 221.62, 225.18, 228.72, 232.14, 235.39, 238.7, 241.89, 245.16, 248.28, 251.53, 254.87, 258.05, 261.22, 264.41, 267.61, 270.72, 273.95, 277.05, 280.2, 283.26, 286.42, 290.37, 293.86, 297.3, 300.29, 303.2, 306.19, 308.93, 311.67, 314.57, 317.15, 319.73, 322.54, 325.24, 327.74, 330.38, 332.84, 335.23, 337.72, 340.3, 342.7, 344.93, 347.39, 349.67, 351.89, 354.2, 356.62, 358.88, 361.21, 363.76, 366.05, 368.15, 370.24, 372.48, 374.47, 376.34, 378.38, 380.64, 382.7, 384.72, 386.67, 388.84, 390.85, 392.72, 394.63, 396.52, 398.25, 399.87, 401.41, 402.81, 404.2, 405.69, 406.89],
# 'isorted_merge_batches_20': [11.35, 15.65, 16.54, 17.41, 18.43, 19.33, 20.21, 21.09, 21.96, 22.83, 23.79, 24.72, 25.59, 26.45, 27.31, 28.18, 29.05, 30.02, 30.91, 31.77, 32.64, 33.51, 34.36, 35.31, 36.23, 37.1, 37.96, 38.82, 39.69, 40.56, 41.53, 42.42, 43.29, 44.15, 45.01, 45.88, 46.81, 47.77, 48.65, 49.61, 50.5, 51.39, 52.26, 53.27, 54.18, 55.08, 55.97, 56.86, 57.75, 58.74, 59.68, 60.58, 61.48, 62.38, 63.27, 64.25, 65.21, 66.11, 67.01, 67.9, 68.81, 69.73, 70.74, 71.65, 72.55, 73.46, 74.36, 75.27, 76.27, 77.2, 78.09, 78.98, 79.92, 80.83, 81.81, 82.78, 83.75, 84.71, 85.66, 86.6, 87.57, 88.54, 89.48, 90.43, 91.37, 92.31, 93.26, 94.24, 95.18, 96.12, 97.05, 97.99, 98.95, 99.95, 100.89, 101.82, 102.76, 103.69, 104.66, 105.67, 106.59],
'isorted_merge_batches_1000': [9.25, 9.74, 10.16, 10.57, 10.98, 11.39, 11.8, 12.22, 12.63, 13.12, 13.58, 14.03, 14.44, 14.85, 15.26, 15.68, 16.09, 16.5, 16.91, 17.33, 17.74, 18.23, 18.68, 19.12, 19.54, 19.95, 20.36, 20.77, 21.19, 21.6, 22.01, 22.42, 22.84, 23.25, 23.66, 24.07, 24.49, 24.97, 25.43, 25.87, 26.3, 26.72, 27.14, 27.55, 27.96, 28.37, 28.79, 29.2, 29.62, 30.03, 30.53, 30.98, 31.42, 31.83, 32.24, 32.65, 33.06, 33.47, 33.9, 34.3, 34.71, 35.12, 35.53, 36.0, 36.45, 36.9, 37.32, 37.73, 38.14, 38.54, 38.96, 39.37, 39.78, 40.19, 40.6, 41.0, 41.41, 41.88, 42.33, 42.77, 43.24, 43.65, 44.06, 44.47, 44.88, 45.29, 45.7, 46.1, 46.51, 46.92, 47.34, 47.82, 48.28, 48.73, 49.14, 49.55, 49.96, 50.38, 50.79, 51.22, 51.71],
'isorted_quicksort_stable': [0.21, 11.11, 11.96, 12.99, 14.0, 14.89, 16.63, 17.73, 18.85, 19.8, 21.0, 21.92, 22.94, 23.8, 30.13, 31.1, 32.65, 33.53, 34.42, 35.73, 36.67, 38.07, 38.94, 39.96, 40.77, 43.58, 44.58, 46.44, 47.52, 48.5, 49.49, 50.42, 51.65, 52.56, 53.68, 54.57, 55.53, 57.2, 58.15, 58.91, 60.22, 61.12, 62.13, 63.09, 67.24, 68.19, 69.32, 70.17, 71.14, 74.37, 75.22, 76.48, 77.39, 78.21, 79.32, 80.11, 81.02, 82.44, 83.45, 84.35, 85.13, 86.85, 87.71, 88.65, 90.47, 91.38, 92.25, 93.07, 94.79, 95.63, 96.53, 98.08, 98.93, 100.23, 101.35, 102.21, 103.25, 106.85, 107.83, 108.75, 110.31, 111.54, 112.54, 113.36, 114.35, 115.69, 116.74, 117.55, 118.79, 119.94, 120.86, 122.49, 123.33, 124.35, 126.06, 127.04, 127.87, 129.01, 129.87, 130.83, 131.68],
'quick_sort_iter_balanced': [0.67, 11.35, 11.36, 11.36, 11.37, 11.38, 11.39, 11.4, 11.4, 11.98, 11.99, 12.0, 12.01, 12.02, 13.22, 13.23, 13.24, 13.25, 13.26, 13.27, 13.28, 13.29, 13.3, 13.31, 17.31, 17.32, 17.33, 17.34, 17.35, 17.35, 17.36, 17.37, 17.38, 18.35, 18.36, 18.36, 18.37, 18.38, 18.39, 18.4, 18.4, 20.96, 20.97, 20.98, 20.99, 21.0, 21.01, 21.01, 21.02, 21.03, 21.04, 22.58, 22.59, 22.6, 22.6, 22.61, 22.62, 23.75, 23.76, 23.76, 23.77, 23.78, 23.79, 23.8, 23.8, 23.81, 23.82, 27.09, 27.1, 27.11, 27.12, 27.13, 27.14, 27.14, 27.94, 27.94, 27.95, 27.96, 27.97, 27.98, 27.98, 29.89, 29.9, 29.91, 29.92, 29.92, 29.93, 29.94, 31.44, 31.45, 31.46, 31.46, 31.47, 31.48, 32.18, 32.19, 32.19, 32.2, 32.21, 32.22, 32.23],
# 'quick_sort_iter_balanced_cy': [0.72, 5.87, 5.88, 5.89, 5.9, 5.91, 5.92, 7.02, 7.03, 7.04, 7.05, 7.05, 7.06, 7.07, 7.08, 7.09, 8.0, 8.01, 8.02, 8.03, 9.15, 9.16, 9.17, 9.18, 9.19, 10.04, 10.05, 10.05, 10.06, 10.07, 10.08, 10.09, 10.09, 14.14, 14.15, 14.16, 14.17, 14.18, 14.19, 14.2, 15.45, 15.45, 15.46, 15.47, 15.48, 15.49, 15.49, 15.5, 15.51, 15.52, 16.65, 16.66, 16.67, 16.68, 16.69, 16.69, 16.7, 17.2, 17.21, 17.22, 17.23, 17.24, 20.2, 20.21, 20.22, 20.23, 20.24, 20.24, 20.25, 20.66, 20.67, 20.68, 20.69, 21.2, 21.21, 21.21, 21.22, 21.58, 21.59, 21.6, 23.38, 23.39, 23.4, 23.41, 23.41, 23.42, 23.43, 23.44, 24.87, 24.88, 24.89, 24.9, 24.91, 24.91, 24.92, 24.93, 24.94, 24.95, 25.24, 25.25, 25.26],
'quick_sort_iter': [0.34, 6.2, 6.21, 6.22, 6.22, 7.36, 7.37, 7.37, 7.38, 7.39, 7.4, 7.41, 7.42, 7.43, 12.7, 12.72, 12.74, 12.76, 12.77, 12.79, 12.81, 19.42, 19.43, 19.44, 20.12, 21.2, 21.2, 21.21, 21.22, 21.23, 21.89, 21.9, 21.91, 21.91, 21.92, 21.93, 24.43, 24.44, 24.45, 24.46, 25.81, 25.81, 25.82, 25.83, 25.84, 26.52, 27.18, 28.25, 28.26, 28.26, 28.27, 28.28, 28.29, 28.3, 28.3, 28.31, 31.29, 31.3, 32.11, 32.12, 33.16, 33.17, 33.18, 33.19, 33.19, 33.2, 33.21, 33.22, 33.23, 34.95, 34.96, 34.97, 37.41, 37.43, 37.46, 37.48, 37.5, 37.53, 39.47, 40.84, 40.85, 40.86, 42.04, 42.05, 43.47, 43.48, 43.49, 43.5, 44.46, 44.47, 44.48, 45.58, 45.59, 45.6, 45.61, 45.62, 45.63, 45.64, 45.65, 45.66, 45.67],
# 'quick_sort_iter_cy': [0.38, 4.17, 4.18, 4.19, 4.2, 5.22, 5.23, 5.24, 5.25, 5.26, 5.26, 5.27, 5.28, 5.29, 8.69, 8.7, 8.7, 8.71, 8.72, 8.73, 8.74, 12.66, 12.67, 12.67, 13.15, 14.06, 14.07, 14.08, 14.08, 14.09, 14.77, 14.78, 14.79, 14.79, 14.8, 14.81, 16.68, 16.69, 16.7, 16.71, 17.68, 17.69, 17.7, 17.71, 17.72, 18.19, 18.76, 19.98, 19.99, 20.0, 20.01, 20.02, 20.03, 20.04, 20.05, 20.06, 21.96, 21.97, 22.59, 22.6, 23.68, 23.69, 23.7, 23.71, 23.72, 23.73, 23.74, 23.74, 23.75, 25.15, 25.16, 25.17, 26.74, 26.75, 26.76, 26.76, 26.77, 26.78, 27.53, 28.49, 28.5, 28.5, 29.17, 29.18, 30.15, 30.18, 30.19, 30.2, 31.02, 31.03, 31.04, 32.16, 32.17, 32.17, 32.18, 32.19, 32.2, 32.22, 32.23, 32.25, 32.25],
'qm_sort_iter': [8.51, 9.02, 9.48, 9.95, 10.41, 10.88, 11.34, 11.81, 12.35, 12.87, 13.37, 13.83, 14.3, 14.76, 15.23, 15.7, 16.16, 16.62, 17.09, 17.55, 18.09, 18.6, 19.11, 19.58, 20.07, 20.54, 21.0, 21.47, 21.94, 22.41, 22.87, 23.34, 23.88, 24.4, 24.91, 25.38, 25.86, 26.33, 26.8, 27.35, 27.82, 28.3, 28.77, 29.24, 29.79, 30.31, 30.82, 31.29, 31.76, 32.23, 32.7, 33.18, 33.65, 34.12, 34.59, 35.06, 35.61, 36.14, 36.64, 37.11, 37.59, 38.07, 38.54, 39.01, 39.48, 39.96, 40.43, 40.9, 41.45, 41.97, 42.47, 42.94, 43.41, 43.91, 44.39, 44.86, 45.33, 45.8, 46.27, 46.75, 47.31, 47.83, 48.33, 48.8, 49.27, 49.75, 50.22, 50.69, 51.16, 51.67, 52.15, 52.62, 53.21, 53.74, 54.25, 54.72, 55.2, 55.67, 56.15, 56.67, 57.48],
# 'qm_sort_iter_cy': [8.54, 8.84, 9.1, 9.36, 9.68, 9.97, 10.26, 10.54, 10.82, 11.09, 11.34, 11.61, 11.86, 12.13, 12.39, 12.65, 12.9, 13.16, 13.42, 13.68, 13.94, 14.2, 14.45, 14.72, 14.97, 15.29, 15.57, 15.86, 16.14, 16.43, 16.68, 16.94, 17.2, 17.46, 17.72, 17.98, 18.24, 18.54, 18.8, 19.05, 19.31, 19.56, 19.82, 20.08, 20.34, 20.59, 20.85, 21.14, 21.43, 21.71, 21.99, 22.28, 22.53, 22.79, 23.05, 23.31, 23.56, 23.82, 24.08, 24.33, 24.59, 24.85, 25.11, 25.36, 25.62, 25.88, 26.13, 26.39, 26.65, 26.97, 27.25, 27.54, 27.82, 28.1, 28.35, 28.61, 28.86, 29.12, 29.37, 29.63, 29.92, 30.19, 30.46, 30.73, 30.99, 31.26, 31.53, 31.8, 32.07, 32.38, 32.67, 32.97, 33.27, 33.58, 33.88, 34.16, 34.44, 34.73, 35.02, 35.31, 36.11]
}