неделя, 7 юли 2013 г.

Алгоритми за сортиране

Blog of Syssboxx

Сортирането е едно от основните действия, извършвани с данните при обработката им.Подтикната от домашното за масиви, в което присъстваха доста задачи за сортиране на масиви чрез различни алгоритми, реших да потърся информация за всеки от тях. Тук предлагам кратко обобщение на някой от най-известните алгоритми за сортиране на масиви и имплементацията им. Постепенно ще допълвам статията с други, не чак толкова популярни алгоритми.

Selection Sort

Този алгоритъм за сортиране е известен на български още като сортиране чрез пряка селекция.

Принципът му на действие се състои в :

1.Намиране на най-малкият елемент от масива

2.Размяна на стойностите на този елемент с първия елемент от масива

3.Тези действия се повтарят докато се изчерпят всички елементи и масивът бъде подреден в нарастващ ред

Merge Sort

Merge Sort e "разделяй и владей алгоритъм, базиран на сравнение."

1.Първоначално неподредения масив се разделя на две части.

2.След това всяка от получените части се разделя още на два подмасива, докато останат само единични елементи.

3.Всеки два съседни елемента се сравняват и елементите в двойката се обединяват и пореждат във възходящ ред.(Merge)

4.След изчерпване на единичните елементи се преминава към сравняване с елементите от съседната двойка.Съседните подмасиви се сравняват, подреждат и обединяват докато не бъдат подредени всички подмасиви и остане само един масив - подреденият.

Quick Sort

Принципът на действие на бързото сортиране не състои в следното :

1.Избира се елемент спрямо който ще се сравняват останалите елементи в масива т. нар. "pivot". За такъв елемент може да бъде избран - първия или последния елемент, медианата или произволен елемент от масива.

2.Всеки елемент се сранява с "pivot" елемента и се пренаредждат, така че елементите,по-малки от него се поставят вляво от него, а по-големите - вдясно от него.

3.Тези действия се повтарят рекурсивно - избира се нов "pivot" елемент за всяка подредица и отново се сравняват останалите елементи с него.

4.Получените подредици се сливат и получаваме подредения масив.

source

Bubble Sort

Методът на мехурчето е един от най-известните алгоритмни за сортиране :

1.Той сравнява последователно всичка двойка съседни елементи една с друга.

2.Ако се окаже, че вторият елемент е по-голям местата им се разменят.

Въпреки, че методът на мехурчето е един от най-семплите методи за сортиране ефективността му бързо намалява при употреба в големи редици от данни. Не е ефективен и при редици, подредени в обратен ред.

Insertion Sort

Този метод е подобен на методът на мехурчето, но е по-ефективен и намалява броя на свавняванията.

1.Даден елемент се сравнява съсъс всички по-големи елементи, докато не се открие елемент, по-малък от него.По този начин при всяка проверка първия елемент от неподредения подмасив се прехвърля в подредения подмасив, и с вмъква на определеното му място.

За редици от n елемента ще са нужни n-1 pроверки, за да се сортира целия масив. Подходящ е за сортиране на редици до 30 елемента.

Алгоритмите в действие

И накрая ето еднa доста забавна поредица от видеа,която визиализира алгоритмите на сортиране чрез танци :)

Selection Sort

Merge Sort

Quick Sort

Bubble Sort

Insertion Sort


to be continued ...

понеделник, 3 юни 2013 г.

[C#] Conditional Statements

Blog of Syssboxx

Споделям решенията си на по-интересниte задачи от темата за условни конструкции

Convert Number To String

Write a program that converts a number in the range [0...999] to a text corresponding to its English pronunciation.

Exemples :

0 - > "zero"

273 - > "two hundred seventy-three"

400 - > "four hundred"

501 - > "five hundred and one"

711 - > "seven hundred and eleven"

source

Sum of subset

We are given 5 integer numbers. Write a program that checks if the sum of some subset of them is 0.

Example: 3, -2, 1, 1, 8 -> 1+1-2=0.

петък, 31 май 2013 г.

[C#] Console Input / Output

Blog of Syssboxx

Споделям решенията си на по-интересниte задачи от темата за вход и изход от конзолата

Редица на Фибоначи / Fibonacci Sequence

Write a program to print the first 100 members of the sequence of Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, …

source

Сума от числа с плаваща запетая с точност 0.001 / Sum of floating point numbers with accuracy 0.001

Write a program to calculate the sum (with accuracy of 0.001): 1 + 1/2 - 1/3 + 1/4 - 1/5 + ...

source

Game Falling Rocks

Implement the "Falling Rocks" game in the text console. A small dwarf stays at the bottom of the screen and can move left and right (by the arrows keys). A number of rocks of different sizes and forms constantly fall down and you need to avoid a crash.

Rocks are the symbols ^, @, *, &, +, %, $, #, !, ., ;, - distributed with appropriate density. The dwarf is (O).

Implement collision detection and scoring system.

Най-интересната програмка до момента.Целта на играта е джуджето да се спаси от падащите скали.

За символите на различите скали и техните цветове използвам 2 масива,от които на случаен принцип генерирам елемент с определен символ и цвят.След това отново чрез рандом генератор генерирам символите, които се появяват в игралното поле. Създавам обекти и свойства за джуджето и скалите, като движението на джуджето се управлява с клавишите за лява и дясна стрелка, а движението на скалите чрез създаване на нови обекти за новите координати,копиране на свойствата им в тях и изчистване на старите. Играта е предвидена с 5 живота. Съответно при сблъсък играчът губи един живот и се увеличава скоростта на падащите скали.От друга страна символът 'О' дава бонус и носи +1 допълнителен живот.Играта завършва при 0 останали живота (Game Over) или натрупани 50 бонуса (WIN).

сряда, 29 май 2013 г.

[C#] Primitive Data Types

Blog of Syssboxx

Споделям решенията си на по-интересните задачи от темата за примитивните типове данни.Задачите, които съм подбрала са :

Сравняване на числа с плаваща запетая с точност до 0.000001

Write a program that safely compares floating-point numbers with precision of 0.000001. Examples: (5.3 ; 6.01)  false; (5.00000001 ; 5.00000003)  true

source

Принтиране на равнобедрен триъгълник (съставен от символ за копирайт)

Write a program that prints an isosceles triangle of 9 copyright symbols ©.Note: the © symbol may be displayed incorrectly.

source

Размяна на стойности на две променливи

Declare two integer variables and assign them with 5 and 10 and after that exchange their values.

Проекти и домашни

Blog of Syssboxx

В тази категория ще слагам основно по-интересните задачи от домашните и проектите, правени по време на обучението ми в Академията на Телерик, заедно с разяснения по тях, където съм преценила,че има нужда. Проектите по програмиране ще са основно на C#,а по уеб дизайн - съответно с HTML,CSS и Javascript.

сряда, 20 март 2013 г.

Ресурси за обучение онлайн

Blog of Syssboxx

Местата в интернет за безплатно самообучение

За хората, които обичат да учат нови неща и ученето не е нещо, което се изчерпва с училището и университета има добри новини - все повече стават сайтовете, специализирани в безплатно обучение чрез видео.Какво по-лесно и приятно от това :)В България все още може да се каже, че Телерик Аcademy са единствените, който предлагат подобно безплатно и качествено ит обучение в такъв мащаб.

Ще се опитам да систематизирам на едно място няколко международни сайта за онлайн видеообучение, които определено смятам да следя редовно.

Coursera

Поставям го на първо място, защото е най-богатия сайт както откъм съдържание, така и откъм тематика. Предлага безплатни обучения от водещи международни университети, а категориите, от които можете да избирате са наистина разнообразни:

Изкуство, Биология, Химия, Компютърни науки, Икономика и Финанси, Науки за земята, Хранене, Обазование, Общество и здраве, Хуманитарни науки, Право, Математика, Медицина, Музика, филми и аудио, Информация, технологии у дизайн, Физика, Социални науки, Статистика и анализ на данни

Codecademy - Learn to code

Обучение чрез видео и упражнения под формата на игра.Предлага обучение по HTML,CSS, Javascipt, PHP,Python и Ruby

Code school

Обучение чрез видео и упражнения под формата на игра, в която събираш точки за всяко направено упражнение и получаваш правото да отключиш следващото ниво.Предлага обучение по HTML,CSS,SASS, Javascipt,jQuery, Ruby и iOS. Има безплатни обучения, както и платен месечен абонамент от 25$

Canvas network

Представлява отворена, онлайн мрежа за обучения в сътрудничество с различни университети. Темите също са разнообразни - Изкуство, История, Математика, Технологии и Хуманитарни науки

Udemy

Основно платени обучения,като най-евтините са по 19$.Има обучения по Ексел, уеб разработка и дизайн, iPhone приложения, PHP, Фотошоп и фотография И други.

Udacity - Learn. Think. Do.

Предлага курсове за начинаещи и напреднали в категориите Бизнес, Компютърни науки, Математика и Физика

Edx The Future of Online Education

Предлага безплатни курсове от водещите университети, с основни партньори Харвард и МИТ, създаден спесиално за интерактивно обучение през интернет

Class Central

Този сайт систематизира и предосатавя накуп обученията, предлагани от водещите международни университети като Станфорд, МИТ и Харвард по други подобни онлайн платформи за обучение - тук са включени курсовете от Coursera, Udacity, Canvas Network и други

Определено има какво да учат любознателните :) Така е, изберете вашия курс и започвайте !!!

събота, 16 февруари 2013 г.

Малко вдъхновение

Blog of Syssboxx

Just for inspiration

В тази категория ще публикувам линкове към сайтове, които са ме вдъхновили или са ме впечатлили с нещо.

Ето едно добро начало за вдъхновение :


to be continued...