1
1
mirror of https://github.com/theoludwig/programming-challenges.git synced 2024-12-08 00:45:29 +01:00

feat(solutions): add sorting-algorithms/dart/bubble-sort

This commit is contained in:
Divlo 2021-06-29 22:38:17 +02:00
parent aa3eec06ba
commit 50a1cda3d8
No known key found for this signature in database
GPG Key ID: 185ED2F15F104E52
18 changed files with 62 additions and 7 deletions

View File

@ -19,7 +19,7 @@ You are given a list of `n` array definitions and your job is to figure out what
### Input ### Input
- **Line 1:** An integer `n` for the number of array assignments - **Line 1:** An integer `n` for the number of array assignments
- **`N` next lines:** One array assignment per line: `array_identifier` [ `first_index` .. `last_index` ] = `last_index - first_index + 1` integers separated by space - **`n` next lines:** One array assignment per line: `array_identifier` [ `first_index` .. `last_index` ] = `last_index - first_index + 1` integers separated by space
- **Line `n+2`:** Element to print: `arr` [ `i` ] - **Line `n+2`:** Element to print: `arr` [ `i` ]
### Constraints ### Constraints

View File

@ -9,6 +9,11 @@ We will use the [numerical order](https://en.wikipedia.org/wiki/Numerical_order)
Write a function that takes a list of integers and sort them in ascending order. Write a function that takes a list of integers and sort them in ascending order.
## Input
- **Line 1:** An integer `n` for the length of the list of integers
- **`n` next lines:** the numbers to sort
### Constraints ### Constraints
- List of integers length <= 25 000 - List of integers length <= 25 000

View File

@ -4,8 +4,9 @@
#include "bubble_sort.h" #include "bubble_sort.h"
int main() { int main() {
int *numbers = malloc(25000 * sizeof(int));
int current_number; int current_number;
int length = scanf("%d", &current_number);
int *numbers = malloc(current_number * sizeof(int));
int index_input = 0; int index_input = 0;
while (scanf("%d", &current_number) != EOF) { while (scanf("%d", &current_number) != EOF) {
numbers[index_input] = current_number; numbers[index_input] = current_number;

View File

@ -4,8 +4,9 @@
#include "insertion_sort.h" #include "insertion_sort.h"
int main() { int main() {
int *numbers = malloc(25000 * sizeof(int));
int current_number; int current_number;
int length = scanf("%d", &current_number);
int *numbers = malloc(current_number * sizeof(int));
int index_input = 0; int index_input = 0;
while (scanf("%d", &current_number) != EOF) { while (scanf("%d", &current_number) != EOF) {
numbers[index_input] = current_number; numbers[index_input] = current_number;

View File

@ -4,8 +4,9 @@
#include "merge_sort.h" #include "merge_sort.h"
int main() { int main() {
int *numbers = malloc(25000 * sizeof(int));
int current_number; int current_number;
int length = scanf("%d", &current_number);
int *numbers = malloc(current_number * sizeof(int));
int index_input = 0; int index_input = 0;
while (scanf("%d", &current_number) != EOF) { while (scanf("%d", &current_number) != EOF) {
numbers[index_input] = current_number; numbers[index_input] = current_number;

View File

@ -0,0 +1,7 @@
# sorting-algorithms/dart/bubble-sort
Created by [@Divlo](https://github.com/Divlo) on 29 June 2021.
| Algorithm | Best Case | Average Case | Worst Case |
| ----------------------------------------------------------- | ----------- | ------------ | ----------- |
| [Bubble sort](https://wikipedia.org/wiki/Bubble_sort) | O(n) | O(n²) | O(n²) |

View File

@ -0,0 +1,32 @@
import 'dart:io';
void main() {
int length = int.parse(readLineSync());
List<int> numbers = [];
for (int indexInput = 0; indexInput < length; indexInput++) {
numbers.add(int.parse(readLineSync()));
}
List<int> sortedNumbers = bubbleSort(numbers);
for (int index = 0; index < length; index++) {
print(sortedNumbers[index]);
}
}
List<int> bubbleSort(Iterable<int> numbersInput) {
var numbers = [...numbersInput];
for (var index1 = 0; index1 < numbers.length; index1++) {
for (var index2 = 0; index2 < numbers.length - index1 - 1; index2++) {
if (numbers[index2] > numbers[index2 + 1]) {
var temporary = numbers[index2];
numbers[index2] = numbers[index2 + 1];
numbers[index2 + 1] = temporary;
}
}
}
return numbers;
}
String readLineSync() {
String? string = stdin.readLineSync();
return string == null ? '' : string;
}

View File

@ -12,7 +12,7 @@ readlineInterface.on('close', solution)
function solution() { function solution() {
const numbers = input.map((value) => Number(value)) const numbers = input.map((value) => Number(value))
const sortedNumbers = bubbleSort(numbers) const sortedNumbers = bubbleSort(numbers.slice(1))
sortedNumbers.forEach((number) => { sortedNumbers.forEach((number) => {
console.log(number) console.log(number)
}) })

View File

@ -12,7 +12,7 @@ readlineInterface.on('close', solution)
function solution() { function solution() {
const numbers = input.map((value) => Number(value)) const numbers = input.map((value) => Number(value))
const sortedNumbers = insertionSort(numbers) const sortedNumbers = insertionSort(numbers.slice(1))
sortedNumbers.forEach((number) => { sortedNumbers.forEach((number) => {
console.log(number) console.log(number)
}) })

View File

@ -12,7 +12,7 @@ readlineInterface.on('close', solution)
function solution() { function solution() {
const numbers = input.map((value) => Number(value)) const numbers = input.map((value) => Number(value))
const sortedNumbers = mergeSort(numbers) const sortedNumbers = mergeSort(numbers.slice(1))
sortedNumbers.forEach((number) => { sortedNumbers.forEach((number) => {
console.log(number) console.log(number)
}) })

View File

@ -18,6 +18,7 @@ numbers: List[int] = []
for value in sys.stdin: for value in sys.stdin:
numbers.append(int(value.rstrip('\n'))) numbers.append(int(value.rstrip('\n')))
numbers = numbers[1:]
sorted_numbers = bubble_sort(numbers) sorted_numbers = bubble_sort(numbers)
for number in sorted_numbers: for number in sorted_numbers:
print(number) print(number)

View File

@ -18,6 +18,7 @@ numbers: List[int] = []
for value in sys.stdin: for value in sys.stdin:
numbers.append(int(value.rstrip('\n'))) numbers.append(int(value.rstrip('\n')))
numbers = numbers[1:]
sorted_numbers = insertion_sort(numbers) sorted_numbers = insertion_sort(numbers)
for number in sorted_numbers: for number in sorted_numbers:
print(number) print(number)

View File

@ -41,6 +41,7 @@ numbers: List[int] = []
for value in sys.stdin: for value in sys.stdin:
numbers.append(int(value.rstrip('\n'))) numbers.append(int(value.rstrip('\n')))
numbers = numbers[1:]
sorted_numbers = merge_sort(numbers) sorted_numbers = merge_sort(numbers)
for number in sorted_numbers: for number in sorted_numbers:
print(number) print(number)

View File

@ -1 +1,2 @@
1 1
1

View File

@ -1,3 +1,4 @@
10
1 1
2 2
5 5

View File

@ -1,3 +1,4 @@
100
86 86
100 100
98 98

View File

@ -1,3 +1,4 @@
1000
111 111
72 72
170 170

View File

@ -1,3 +1,4 @@
25000
1342 1342
4152 4152
19704 19704