diff --git a/src/sorting/src/bubble_sort.cairo b/src/sorting/src/bubble_sort.cairo index 0913eff1..470f580a 100644 --- a/src/sorting/src/bubble_sort.cairo +++ b/src/sorting/src/bubble_sort.cairo @@ -26,7 +26,7 @@ fn bubble_sort_elements, +Drop, +PartialOrd>(mut array: Array< idx2 = 1; sorted_iteration = 0; } else { - if *array[idx1] < *array[idx2] { + if *array[idx1] <= *array[idx2] { sorted_array.append(*array[idx1]); idx1 = idx2; idx2 += 1; diff --git a/src/sorting/src/tests/bubble_sort_test.cairo b/src/sorting/src/tests/bubble_sort_test.cairo index 0f2331ba..5026a9a9 100644 --- a/src/sorting/src/tests/bubble_sort_test.cairo +++ b/src/sorting/src/tests/bubble_sort_test.cairo @@ -44,3 +44,14 @@ fn bubblesort_test_pre_sorted() { assert(is_equal(sorted.span(), correct.span()), 'invalid result'); } + +#[test] +#[available_gas(2000000)] +fn bubblesort_test_2_same_values() { + let mut data = array![1_u32, 2_u32, 2_u32, 4_u32]; + let mut correct = array![1_u32, 2_u32, 2_u32, 4_u32]; + + let sorted = bubble_sort::bubble_sort_elements(data); + + assert(is_equal(sorted.span(), correct.span()), 'invalid result'); +}