Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include <iostream>
- #include <vector>
- template <class T>
- class Sorting {
- private:
- static void numWithSmallestIndex(std::size_t idx, std::size_t &minIndex, const std::vector<T> &arr) {
- for (std::size_t i = idx; i < arr.size(); ++i) {
- if(arr.at(i) < arr.at(minIndex)) {
- minIndex = i;
- }
- }
- }
- public:
- static void selectionSort(std::vector<T> &arr) {
- for (std::size_t i = 0; i < arr.size() - 1; ++i) {
- std::size_t minIndex = i;
- numWithSmallestIndex(i + 1, minIndex, arr);
- if(minIndex != i) {
- std::swap(arr.at(i), arr.at(minIndex));
- minIndex = i;
- }
- }
- }
- static void insertionSort(std::vector<T> &arr) {
- for (std::size_t i = 1; i < arr.size(); i++) {
- for (std::size_t j = i; j > 0 && arr[j - 1] > arr[j]; j--) {
- std::swap(arr.at(j), arr.at(j - 1));
- }
- }
- }
- static void bubbleSort(std::vector<T> &arr) {
- for (std::size_t i = 0; i < arr.size(); ++i) {
- for (std::size_t j = 0; j < arr.size() - i - 1; ++j) {
- if(arr.at(j) > arr.at(j + 1)) {
- std::swap(arr.at(j), arr.at(j + 1));
- }
- }
- }
- }
- };
Add Comment
Please, Sign In to add comment