diff --git a/01_introduction_to_algorithms/dart/binary_search.dart b/01_introduction_to_algorithms/dart/binary_search.dart new file mode 100644 index 0000000..a0bcf91 --- /dev/null +++ b/01_introduction_to_algorithms/dart/binary_search.dart @@ -0,0 +1,25 @@ +void main() { + final myList = [1, 3, 5, 7, 9]; + print(binarySearch(myList, 3)); + print(binarySearch(myList, -1)); +} + +int? binarySearch(List list, int item) { + int low = 0; + int high = list.length - 1; + + while (low <= high) { + final mid = (low + high) ~/ 2; + final guess = list[mid]; + + if (guess == item) { + return mid; + } + + if (guess > item) { + high = mid - 1; + } else { + low = mid + 1; + } + } +} diff --git a/02_selection_sort/dart/selection_sort.dart b/02_selection_sort/dart/selection_sort.dart new file mode 100644 index 0000000..4fd7553 --- /dev/null +++ b/02_selection_sort/dart/selection_sort.dart @@ -0,0 +1,29 @@ +main() { + print(selectionSort([5, 3, 6, 2, 10])); +} + +List selectionSort(List arr) { + final List newArr = List.empty(growable: true); + final arrLength = arr.length; + + for (int i = 0; i < arrLength; i++) { + final smallest = findSmallest(arr); + newArr.add(arr.removeAt(smallest)); + } + + return newArr; +} + +int findSmallest(List arr) { + int smallest = arr[0]; + int smallestIndex = 0; + + for (int i = 1; i < arr.length; i++) { + if (arr[i] < smallest) { + smallest = arr[i]; + smallestIndex = i; + } + } + + return smallestIndex; +}