GithubHelp home page GithubHelp logo

kalenchukov / sorts Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 121 KB

Коллекция алгоритмов сортировки (Collection of sorting algorithms)

License: MIT License

Java 100.00%
merge-sort sort-methods sorts bubble-sort comb-sort shaker-sort insertion-sort selection-sort

sorts's Introduction

Справка

Sorts

Коллекция алгоритмов сортировки.

Реализованные алгоритмы сортировки

  • Сортировка слиянием
  • Сортировка пузырьком
  • Шейкерная сортировка
  • Сортировка расчёской
  • Сортировка вставками
  • Сортировка выбором

Использование

Для сортировки элементов разных типов требуется использовать компараторы.

Компаратор

Пример реализации компаратора для объектов типа Integer.

import java.lang.Integer;
import java.util.Comparator;

public class IntegerComparator implements Comparator<Integer>
{
    @Override
    public int compare(final Integer value1, final Integer value2) 
    {
        return value1.compareTo(value2);
    }
}

Пример реализации компаратора для объектов типа String.

import java.lang.String;
import java.util.Comparator;

public class StringComparator implements Comparator<String>
{
    @Override
    public int compare(final String value1, final String value2) 
    {
        if (value1.length() < value2.length()) {
            return -1;
        } else if (value1.length() > value2.length())  {
            return 1;
        }
        
        return 0;
    }
}

Сортировка

Сортировка слиянием

import java.lang.Integer;
import java.util.List;
import dev.kalenchukov.sorts.Sorting;
import dev.kalenchukov.sorts.MergeSort;

List<Integer> elements = List.of(
	6, 9, 8, 1, 7, -5, 3, 4, 5, 0, 20, 77, -0, -100, 78, 69
);

Sorting<Integer> sorting = new MergeSort<>(elements, new IntegerComparator());
List<Integer> sortedElements = sorting.sort();

Результат выполнения:

-100, -5, 0, 0, 1, 3, 4, 5, 6, 7, 8, 9, 20, 69, 77, 78

Сортировка пузырьком

import java.lang.Integer;
import java.util.List;
import dev.kalenchukov.sorts.Sorting;
import dev.kalenchukov.sorts.BubbleSort;

List<Integer> elements = List.of(
	90, 7, 0, 8, 0, 6, -1
);

Sorting<Integer> sorting = new BubbleSort<>(elements, new IntegerComparator());
List<Integer> sortedElements = sorting.sort();

Результат выполнения:

-1, 0, 0, 6, 7, 8, 90

Шейкерная сортировка

import java.lang.Integer;
import java.util.List;
import dev.kalenchukov.sorts.Sorting;
import dev.kalenchukov.sorts.ShakerSort;

List<Integer> elements = List.of(
	110, 5, 1, 97, 0, 7, 5, -0, 4, -4, -9
);

Sorting<Integer> sorting = new ShakerSort<>(elements, new IntegerComparator());
List<Integer> sortedElements = sorting.sort();

Результат выполнения:

-9, -4, 0, 0, 1, 4, 5, 5, 7, 97, 110

Сортировка расчёской

import java.lang.Integer;
import java.util.List;
import dev.kalenchukov.sorts.Sorting;
import dev.kalenchukov.sorts.CombSort;

List<Integer> elements = List.of(
	11, 4, 8, -12, 6, 3, 9, -5, 1, 2, 13, 7, 10
);

Sorting<Integer> sorting = new CombSort<>(elements, new IntegerComparator());
List<Integer> sortedElements = sorting.sort();

Результат выполнения:

-12, -5, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13

Сортировка вставками

import java.lang.Integer;
import java.util.List;
import dev.kalenchukov.sorts.Sorting;
import dev.kalenchukov.sorts.InsertionSort;

List<Integer> elements = List.of(
	999, 0, -9, 94, -12, 47, 300, 86, 86, -1000
);

Sorting<Integer> sorting = new InsertionSort<>(elements, new IntegerComparator());
List<Integer> sortedElements = sorting.sort();

Результат выполнения:

-1000, -12, -9, 0, 47, 86, 86, 94, 300, 999

Сортировка выбором

import java.lang.Integer;
import java.util.List;
import dev.kalenchukov.sorts.Sorting;
import dev.kalenchukov.sorts.SelectionSort;

List<Integer> elements = List.of(
	889, 7, 1, 6, 1, -7, 56, 47, 0, -700
);

Sorting<Integer> sorting = new SelectionSort<>(elements, new IntegerComparator());
List<Integer> sortedElements = sorting.sort();

Результат выполнения:

-700, -7, 0, 1, 1, 6, 7, 47, 56, 889

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.