Metodyki i Techniki Programowania 2

Podobne dokumenty
Algorytmy sortowania. Przykład Posortuj metod b belkow zbiór pi ciu elementów: w porz dku rosn cym. Funkcja porównuj ca przyjmuje posta :

Sortowanie przez wstawianie Insertion Sort

Algorytmy sortujące i wyszukujące

Strategia "dziel i zwyciężaj"

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Laboratorium nr 7 Sortowanie

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

Struktury Danych i Złożoność Obliczeniowa

funkcje rekurencyjne Wykład 12. Podstawy programowania (język C) Funkcje rekurencyjne (1) Funkcje rekurencyjne (2)

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Programowanie w VB Proste algorytmy sortowania

Algorytm selekcji Hoare a. Łukasz Miemus

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.

Sortowanie. LABORKA Piotr Ciskowski

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński

Algorytmy sortujące. Sortowanie bąbelkowe

Algorytmy sortujące. sortowanie kubełkowe, sortowanie grzebieniowe

Sortowanie Shella Shell Sort

Sortowanie. Bartman Jacek Algorytmy i struktury

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy

Algorytmy i struktury danych

Sortowanie bąbelkowe

Sortowanie bąbelkowe - wersja nr 1 Bubble Sort

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Wstęp do programowania

INFORMATYKA SORTOWANIE DANYCH.

Temat 7. Najlżejsze i najcięższe algorytmy sortowania

Podstawy Programowania 1 Sortowanie tablic jednowymiarowych. Plan. Sortowanie. Sortowanie Rodzaje sortowania. Notatki. Notatki. Notatki.

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Jeszcze o algorytmach

Algorytmy przeszukiwania

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

PDF stworzony przez wersję demonstracyjną pdffactory Pro Program 15

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Algorytmy i Struktury Danych.

. Podstawy Programowania 1. Sortowanie tablic jednowymiarowych. Arkadiusz Chrobot. 16 listopada 2016

(3 kwiecień 2014) Marika Pankowska Kamila Pietrzak

np. dla p=1 mamy T1(N) N/2 średni czas chybionego wyszukiwania z prawdopodobieństwem q:

KONSPEKT ZAJĘĆ KOŁA INFORMATYCZNEGO LUB MATEMATYCZNEGO W KLASIE III GIMNAZJUM LUB I LICEUM ( 2 GODZ.)

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

Kolokwium ze wstępu do informatyki, I rok Mat. (Ściśle tajne przed godz. 10 : grudnia 2005.)

Algorytmy sortowania w języku C. Autor: mgr inż. Sławomir Samolej. Zagadnienie 1. (Sortowanie)

Algorytmy. 1. Sortowanie 2. Statki i okręty. programowanie cz.7. poniedziałek, 2 marca 2009

PODSTAWY INFORMATYKI wykład 5.

Sortowanie przez scalanie

ALGORYTMY I STRUKTURY DANYCH

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

[12] Metody projektowania algorytmów (dziel i rządź, programowanie dynamiczne i algorytmy zachłanne).

Analiza algorytmów zadania podstawowe

liniowa - elementy następują jeden za drugim. Graficznie możemy przedstawić to tak:

Sortowanie - wybrane algorytmy

Algorytmy i Struktury Danych

Programowanie Proceduralne

Konstrukcje warunkowe Pętle

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Programowanie w językach wysokiego poziomu

Zaawansowane algorytmy i struktury danych

Anna Sobocińska Sylwia Piwońska

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Luty 2001 Algorytmy (4) 2000/2001

Uwaga: Funkcja zamień(a[j],a[j+s]) zamienia miejscami wartości A[j] oraz A[j+s].

Matematyczne Podstawy Informatyki

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

Sortowanie zewnętrzne

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Tablice jednowymiarowe

Wybrane algorytmy tablicowe

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

Algorytm. a programowanie -

Proste algorytmy w języku C

Algorytmy i Struktury Danych, 2. ćwiczenia

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami.

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium Nr 4

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Programowanie dynamiczne

Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 9 Rekurencja

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.

Algorytmy i struktury danych

Podstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Algorytmy sortujące 1

Algorytmy i Struktury Danych.

Efektywna metoda sortowania sortowanie przez scalanie

Transkrypt:

Metodyki i Techniki Programowania 2 zajęcia nr 5 algorytmy cz.1: sortowanie Elektronika i Telekomunikacja, semestr III rok akademicki 2009/2010 mgr inż.. Paweł Myszkowski Plan dzisiejszych zajęć 1. Sortowanie elementów w tablicy - idea 2. Sortowanie bąbelkoweb belkowe 3. Sortowanie przez wstawianie 4. Sortowanie przez wybór 5. Szybkie sortowanie, czyli quicksort 6. Zadanie do zrobienia 1

1. Sortowanie - idea Sortowanie - porządkowanie elementów tablicy; takie jej przekształcenie, aby elementy układa adały y się w zależno ności od potrzeb rosnąco lub malejąco. 1 3 5 6 9 9 5 6 3 1 lub 9 6 5 3 1 2. Sortowanie bąbelkoweb belkowe W każdym obiegu pętli p wewnętrznej przebiegamy przez całą tablicę,, porównuj wnując c każdy element z jego sąsiadem siadem z prawej strony, Jeżeli eli badane dwa elementy nie zachowują określonego porządku, zamieniamy je miejscami, Pętla zewnętrzna wykonuje się tak długo, d jak długo d w pętli p wewnętrznej zajdzie przynajmniej jedna zamiana. Nazwa pochodzi od faktu, że e skrajne elementy wędrują kolejno na koniec tablicy jak pęcherzyki p powietrza unoszące się w wodzie. 2

2. Sortowanie bąbelkoweb belkowe Przykład: sortujemy rosnąco zbiór r 9 5 6 3 1 W celu posortowania całego zbioru należy y wykonać 5 obiegów porządkuj dkujących, w których 20 razy porównuje się elementy i dokonuje 9 zamian. 2. Sortowanie bąbelkoweb belkowe Algorytm sortowania bąbelkowego: b belkowego: 1. Jeśli liczba elementów w w zbiorze jest mniejsza od 2, kończymy algorytm. 2. Rozpoczynamy od pierwszego elementu. 3. Bieżą żący element porównujemy z elementem bezpośrednio następnym w zbiorze.. Jeśli kolejność elementów w jest zła, z to zamieniamy je miejscami. 4. Jeśli bieżą żący element nie jest przedostatnim elementem zbioru, to przesuwamy się do kolejnego elementu i wracamy do punktu 3. 5. Jeśli w trakcie przeglądania zbioru dokonaliśmy zamiany miejsc elementów, wracamy się do punktu 2. 6. Koniec. 3

2. Sortowanie bąbelkoweb belkowe Schemat blokowy opisujący algorytm 3. Sortowanie przez wstawianie Algorytm szybszy i bardziej efektywny niż sortowanie bąbelkowe, b belkowe, Koncepcyjnie jednak bardziej złożony, z ony, Przypomina układanie w ręku r kart dobieranych z talii podczas rozgrywki np.. w brydża a lub pokera. 4

3. Sortowanie przez wstawianie Przykład: sortujemy rosnąco zbiór r 9 5 6 3 1 4 obiegi 10 porówna wnań 9 przesunięć 3. Sortowanie przez wstawianie Algorytm sortowania przez wstawianie: 1. Jeśli zbiór r zawiera mniej niż dwa elementy, to kończymy. 2. Na końcu zbioru tworzymy listę uporządkowanych elementów. Początkowo lista ta obejmuje jeden, ostatni element. 3. Sortowanie rozpoczynamy od elementu leżą żącego w zbiorze tuż przed listą uporządkowan dkowaną.. Element wyciągamy ze zbioru. Miejsce zajmowane przez niego staje się wolne. 4. Wyciągni gnięty element porównujemy kolejno z elementami na liście uporządkowanej. Jeśli element listy jest mniejszy (ze względu na porządek wyznaczony przez funkcję porównuj wnującą) ) od elementu wyciągni gniętego, to przesuwamy go na wolne miejsce. Operację tą powtarzamy dotąd, d, aża napotkamy koniec listy lub element większy lub równy r elementowi wyciągni gniętemu. 5. Element wyciągni gnięty wstawiamy na wolne miejsce. Rozmiar listy uporządkowanej rośnie o 1 element. 6. Jeśli lista uporządkowana nie obejmuje jeszcze całego zbioru, to przechodzimy do punktu 2. 7. W przeciwnym wypadku kończymy algorytm. 5

3. Sortowanie przez wstawianie Schemat blokowy opisujący algorytm 4. Sortowanie przez wybór Algorytm sortowania przez wybór: 1. Jeśli zbiór r liczy mniej niż dwa elementy, to kończymy. 2. W zbiorze wyszukujemy najmniejszy/największy element. 3. Najmniejszy element zamieniamy miejscami z pierwszym elementem zbioru. 4. Za nowy zbiór r przyjmujemy zbiór r bez pierwszego elementu, gdyż ten jest już na prawidłowym miejscu. Powracamy do punktu 1. 6

4. Sortowanie przez wybór Przykład: sortujemy rosnąco zbiór r 9 5 6 3 1 4. Sortowanie przez wybór Wyszukiwanie najmniejszego elementu: 1. Tymczasowy najmniejszy (największy) element przyjmujemy pierwszy element zbioru. 2. Jeśli zbiór r ma mniej niż dwa elementy, kończymy. 3. Za pomocą funkcji porównuj wnującej sprawdzamy kolejno element tymczasowy z pozostałymi elementami zbioru. Jeśli w wyniku porównania elementu tymczasowego z elementem zbioru funkcja porównuj wnująca da wynik false (dla elementu największego da wynik true), to za nowy element najmniejszy (największy) przyjmujemy dany element zbioru i kontynuujemy przeglądanie. 7

4. Sortowanie przez wybór Przykład: Znaleźć najmniejszy element w zbiorze 4 7 3 2 5 1 4. Sortowanie przez wybór Schemat blokowy opisujący algorytm 8

5. Szybkie sortowanie - quicksort Algorytm opracowany przez Hoare'a, Szybki, szczególnie do sortowania dużych tablic, Prosty w implementacji, Opiera się na technice "dziel i zwycięż ężaj" (divide( and conquer), Tablica (po pewnej obróbce) bce) dzielona jest na dwie mniejsze, następnie każda z tablic składowych znów jest dzielona i tak się to odbywa aża do uzyskania zbiorów w jednoelementowych. 5. Szybkie sortowanie - quicksort Sortujemy rosnąco tablicę: 5 7 8 1 4 0 4 6 8 2 1 5 2 6 9 Punkt odniesienia pierwsza liczba z tablicy, czyli 5. Przeglądaj dając c od lewej, szukamy elementu większego (tu: 7), a od prawej mniejszego (tu: 2): 5 7 8 1 4 0 4 6 8 2 1 5 2 6 9 Zamieniamy ze sobą podkreślone elementy. Kontynuujemy przeszukiwanie: 5 2 8 1 4 0 4 6 8 2 1 5 7 6 9 Zamieniamy podkreślone elementy: 5 2 1 1 4 0 4 6 8 2 8 5 7 6 9 Dochodzimy ostatecznie do postaci: 5 2 1 1 4 0 4 2 8 6 8 5 7 6 9 9

5. Szybkie sortowanie - quicksort 5 2 1 1 4 0 4 2 8 6 8 5 7 6 9 Idąc c od lewej zatrzymujemy się na 8, a od prawej na 2, czyli nasze poszukiwania "skrzyżowa owały y się". Cofamy się z każdej strony o krok i dzielimy tablicę: 5 2 1 1 4 0 4 2 8 6 8 5 7 6 9 Z obiema tablicami postępujemy pujemy tak samo jak z tablicą wejściow ciową.. Kolejne podziały y wyglądaj dają następuj pująco: 2 2 1 1 4 0 4 5 6 6 7 5 8 8 9 0 1 1 2 4 2 4 5 5 6 7 6 8 8 9 0 11 2 424 5 5 6 76 8 8 9 0 1 1 2 2 44 5 5 6 6 7 8 8 9 0 1 1 2 2 4 4 5 5 6 6 7 8 8 9 Łączymy całość otrzymując: 0 1 1 2 2 4 4 5 5 6 6 7 8 8 9 5. Szybkie sortowanie - quicksort Uwaga: Quicksort działa a wolniej wyłą łącznie w przypadku tablicy ułożonej u onej odwrotnie niż chcemy sortować.. Sortowanie tablicy wejściowej 9 8 7 6 5 4 3 2 1 0 rosnąco algorytmem quicksort zajmie więcej czasu niż np.. przez wstawianie lub przez wybór. 10

5. Szybkie sortowanie - quicksort Quicksort w języku j C funkcja qsort( ) ) z <stdlib.h< stdlib.h>. Nagłówek funkcji: void qsort(void *base, int nelem, int width, int gdzie: (*fcmp fcmp)(const void *, const void *)) base zrzutowany adres pierwszego elementu tablicy nelem liczba elementów w tablicy width rozmiar pojedynczego elementu tablicy fcmp funkcja porównuj wnująca, która zwraca 0 gdy elementy sąs równe, liczbę dodatnią gdy pierwszy jest większy, liczbę ujemną gdy drugi jest większy 5. Szybkie sortowanie - quicksort Przykład użycia u funkcji qsort( ) ) w programie: #include <stdio.h< stdio.h> #include <stdlib.h< stdlib.h> #include <string.h< string.h> char list[5][4] = { "cat", "car", "cab", "cap", "can" }; int sort_function( ( const void *a, const void *b) { return( strcmp((char *)a,(char *)b) ); } int main(void) { int x; qsort((void *)list, 5, sizeof(list[0]), sort_function); for (x = 0; x < 5; x++) printf("%s\n", ", list[x]); return 0; } 11

6. Zadanie do zrobienia Napisz programy zawierające implementację przedstawionych algorytmów sortowania. Wykorzystaj je do posortowania tablicy 10- elementowej liczb rzeczywistych. Wykorzystuj funkcje użytkownika! Dziękuj kuję za uwagę 12