Алгоритмы

Published
Данный проект предназначет для публикаций всевозможных алгоритмов на любом из языков программирования (предпочтение отдается C++ / C# / Java / Javascript / Python)

Что такое алгоритм?

Алгоритмы окружают нас повсюду. По их принципам существует животный мир, люди, работают компьютеры и механизмы. Некоторые из них очевидны, другие же скрыты от глаз (но это не значит, что их нет).
Алгоритм в информатике — это последовательность действий, которая направлена на достижение окончательного решения проблемы наиболее оптимальными и эффективными способами.
Существует версия, что термин алгоритм произошел от имени древнего ученого Аль-Хорезми, который написал трактат «Книга о сложении и вычитании».
Позднее один из переводчиков на латинский язык неправильно перевел имя ученого и вынес его в название книги — «Алгоритмии о счете индийском». Так этот термин проник в европейские языки и закрепился в них.
Существуют сложные и легкие алгоритмы. Для решения одних не требуется усилий, а для других не хватит и всей мощности компьютеров.

Как должен выглядеть ресурс с Алгоритмом на примере "Быстрой сортировки"

Быстрая сортировка, сортировка Хоара (англ. quicksort), — алгоритм сортировки, разработанный английским информатиком Чарльзом Хоаром во время его работы в МГУ в 1960 году.
Один из самых быстрых известных универсальных алгоритмов сортировки массивов: в среднем O ( n log n ) обменов при упорядочении n элементов; из-за наличия ряда недостатков на практике обычно используется с некоторыми доработками.
#include <iostream>
#include <list>

int main()
{
	// quick sort
	std::list<int> list;
	const int N = 20;
	
	for (int i = 0; i < N; i++)
	{
		if (i % 2 == 0)
			list.push_back(N - i);
		else
			list.push_front(N - i);
	}

	for (std::list<int>::iterator it = list.begin(); it != list.end(); it++) {
		std::cout << (*it) << " ";
	}

	std::cout << std::endl;
	list.sort();
	
	for (std::list<int>::iterator it = list.begin(); it != list.end(); it++) {
		std::cout << (*it) << " ";
	}

	//quick sort end
	std::cout << std::endl;
	//sort greater
	list.sort(std::greater<int>());

	for (std::list<int>::iterator it = list.begin(); it != list.end(); it++) {
		std::cout << (*it) << " ";
	}

	std::cout << std::endl;
	//sort greater end
	std::cin.ignore();
}


Views: 1 116

» Лучшие комментарии


Ev3nt #1 - 6 месяцев назад (изм. ) 4
Голосов: +4 / -0

Алгоритм подгрузки своего mpq | C++

StormOpenArchive - функция, полученная из Storm.dll. Первый аргумент - имя mpq, второй - приоритет, третий - флаг, четвертый - место загрузки.
Скомпилированный mix будет работать даже в редакторе карт.
#include <windows.h>

// Получение Storm.dll
HMODULE hStorm = LoadLibrary("Storm.dll");

// Создание функции
bool StormOpenArchive(LPCSTR lpArchiveName, DWORD dwPriority, DWORD dwFlags, HANDLE* hMPQ)
{
	// Получение функции по её адресу. Номер функции подгрузки mpq = 266.
	return (reinterpret_cast<bool(CALLBACK*)(LPCSTR, DWORD, DWORD, HANDLE)>(GetProcAddress(hStorm, (LPCSTR)266))(lpArchiveName, dwPriority, dwFlags, hMPQ));
}

// Точка входа
BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
	if (ul_reason_for_call == DLL_PROCESS_ATTACH)
	{
		HANDLE hMPQ = NULL;
		// Вызов функции для подгрузки Test.mpq с приоритетом 9 и флагом 0. В случае неудачи, выводится соответствующие сообщение.
		if(!StormOpenArchive("Test.mpq", 9, 0, &hMPQ))
			MessageBox(0, "Couldn't open Test.mpq", "Error", MB_OK | MB_ICONERROR);
	}
	return TRUE;
}
ScorpioT1000 #3 - 6 месяцев назад 1
Голосов: +1 / -0
Почему не проект программирование? Сделали бы категорию с нужными полями как в вц3
Msey #5 - 6 месяцев назад 0
Голосов: +0 / -0
ScorpioT1000, хотел сделать как субпроект к программированию, но программирование уже является дочерним от gamedev. Цепное наследование было бы кстати
ScorpioT1000 #6 - 6 месяцев назад 0
Голосов: +0 / -0
Странно, что он дочерний геймдев, если геймдевом это не всегда является. Может, снять?
makkad #7 - 3 месяца назад 0
Голосов: +0 / -0
Msey, можно заявку на алгоритм? Хотелось бы узнать как написать функцию для нормально распределённой величины на JASS из равномерного распределения c заданным матожиданием и сигмой. Обычно для этого используется алгоритм Бокса-Мюллера, но для него нужна функция натурального логарифма, которой в JASS нет.