From 92e79189233a52156154986bc749605b0118410d Mon Sep 17 00:00:00 2001
From: Boris Galochkin <spore17@mail.ru>
Date: Sat, 6 Nov 2021 22:53:53 +0300
Subject: [PATCH 1/4] Fix sorts/bucket_sort.py

---
 sorts/bucket_sort.py | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/sorts/bucket_sort.py b/sorts/bucket_sort.py
index 58242a1cb1f8..f600f0ff7d17 100644
--- a/sorts/bucket_sort.py
+++ b/sorts/bucket_sort.py
@@ -30,7 +30,7 @@
 from __future__ import annotations
 
 
-def bucket_sort(my_list: list) -> list:
+def bucket_sort(my_list: list, bucket_count: int = 10) -> list:
     """
     >>> data = [-1, 2, -5, 0]
     >>> bucket_sort(data) == sorted(data)
@@ -43,19 +43,25 @@ def bucket_sort(my_list: list) -> list:
     True
     >>> bucket_sort([]) == sorted([])
     True
+    >>> data = [-1e10, 1e10]
+    >>> bucket_sort(data) == sorted(data)
+    True
     >>> import random
     >>> collection = random.sample(range(-50, 50), 50)
     >>> bucket_sort(collection) == sorted(collection)
     True
     """
-    if len(my_list) == 0:
+
+    if len(my_list) == 0 or bucket_count <= 0:
         return []
+
     min_value, max_value = min(my_list), max(my_list)
-    bucket_count = int(max_value - min_value) + 1
+    bucket_size = (max_value - min_value) / bucket_count
     buckets: list[list] = [[] for _ in range(bucket_count)]
 
     for i in range(len(my_list)):
-        buckets[(int(my_list[i] - min_value) // bucket_count)].append(my_list[i])
+        index = min(int((my_list[i] - min_value) / bucket_size), bucket_count - 1)
+        buckets[index].append(my_list[i])
 
     return [v for bucket in buckets for v in sorted(bucket)]
 

From c2f569b272c1cbe6b878170218c37f3be7c95e0b Mon Sep 17 00:00:00 2001
From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
Date: Fri, 18 Aug 2023 01:13:25 +0000
Subject: [PATCH 2/4] updating DIRECTORY.md

---
 DIRECTORY.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/DIRECTORY.md b/DIRECTORY.md
index d4a2bb48511a..e39a0674743a 100644
--- a/DIRECTORY.md
+++ b/DIRECTORY.md
@@ -710,6 +710,7 @@
   * [2 Hidden Layers Neural Network](neural_network/2_hidden_layers_neural_network.py)
   * Activation Functions
     * [Exponential Linear Unit](neural_network/activation_functions/exponential_linear_unit.py)
+    * [Leaky Rectified Linear Unit](neural_network/activation_functions/leaky_rectified_linear_unit.py)
   * [Back Propagation Neural Network](neural_network/back_propagation_neural_network.py)
   * [Convolution Neural Network](neural_network/convolution_neural_network.py)
   * [Perceptron](neural_network/perceptron.py)

From ce9a8e8484786823e36e4a616cff0531f8dae101 Mon Sep 17 00:00:00 2001
From: Tianyi Zheng <tianyizheng02@gmail.com>
Date: Thu, 17 Aug 2023 18:16:16 -0700
Subject: [PATCH 3/4] Remove unused var in bucket_sort.py

---
 sorts/bucket_sort.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sorts/bucket_sort.py b/sorts/bucket_sort.py
index 8ae0e314446f..7e775928adbe 100644
--- a/sorts/bucket_sort.py
+++ b/sorts/bucket_sort.py
@@ -55,7 +55,7 @@ def bucket_sort(my_list: list, bucket_count: int = 10) -> list:
     if len(my_list) == 0 or bucket_count <= 0:
         return []
 
-    min_value, max_value = min(my_list), max(my_list)
+    min_value = min(my_list)
     buckets: list[list] = [[] for _ in range(bucket_count)]
 
     for val in my_list:

From 5ab1cccc399183ca7c5044b9418b443161236af8 Mon Sep 17 00:00:00 2001
From: Tianyi Zheng <tianyizheng02@gmail.com>
Date: Thu, 17 Aug 2023 18:32:40 -0700
Subject: [PATCH 4/4] Fix list index in bucket_sort.py

---
 sorts/bucket_sort.py | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/sorts/bucket_sort.py b/sorts/bucket_sort.py
index 7e775928adbe..c016e9e26e73 100644
--- a/sorts/bucket_sort.py
+++ b/sorts/bucket_sort.py
@@ -55,11 +55,13 @@ def bucket_sort(my_list: list, bucket_count: int = 10) -> list:
     if len(my_list) == 0 or bucket_count <= 0:
         return []
 
-    min_value = min(my_list)
+    min_value, max_value = min(my_list), max(my_list)
+    bucket_size = (max_value - min_value) / bucket_count
     buckets: list[list] = [[] for _ in range(bucket_count)]
 
     for val in my_list:
-        buckets[int(val - min_value)].append(val)
+        index = min(int((val - min_value) / bucket_size), bucket_count - 1)
+        buckets[index].append(val)
 
     return [val for bucket in buckets for val in sorted(bucket)]