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

Podobne dokumenty
Algorytmy i struktury danych. dr inż. Sławomir Samolej D108 A, tel: , WWW: ssamolej.prz-rzeszow.

Tablicę 2-wymiarową można przedstawić jako pewien zestaw tablic 1-wymiarowych np.:

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

Algorytm selekcji Hoare a. Łukasz Miemus

while(wyrażenie) instrukcja

Algorytmy sortujące i wyszukujące

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

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

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

Programowanie w VB Proste algorytmy sortowania

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

Wykład 2. Poprawność algorytmów

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

do instrukcja while(wyrażenie);

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

Programowanie Proceduralne

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Wstęp do programowania

Algorytmy i struktury danych

int tab1[30]; // 30-elementowa tablica elementów typu int char tekst[10]; // 10-elementowa tablica elementów typu char (tablica tekstowa)

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 )

Algorytmy i Struktury Danych.

Proste algorytmy w języku C

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

EGZAMIN MATURALNY 2011 INFORMATYKA

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

struct Student { char nazwisko[30]; int wiek; float ocena; }; #define MAX_ROZMIAR 3 Student lista_studentow[max_rozmiar];

5. Podstawowe algorytmy i ich cechy.

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Struktury Danych i Złożoność Obliczeniowa

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

INFORMATYKA SORTOWANIE DANYCH.

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

Metodyki i Techniki Programowania 2

Wybrane algorytmy tablicowe

Proste algorytmy w języku C

Analiza i Przetwarzanie Obrazów

Sortowanie danych. Jolanta Bachan. Podstawy programowania

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

Wyszukiwanie binarne

Programowanie systemów czasu rzeczywistego laboratorium. Ćwiczenie 1

Wstęp do programowania

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

Jeszcze o algorytmach

Złożoność obliczeniowa zadania, zestaw 2

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Algorytmy i Struktury Danych.

Drzewa wyszukiwań binarnych (BST)

Informatyka A. Algorytmy

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

Analiza algorytmów zadania podstawowe

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

Programowanie Proceduralne

Wstęp do programowania 1

Argumenty wywołania programu, operacje na plikach

Algorytmy przeszukiwania

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 9. Karol Tarnowski A-1 p.

Podstawy algorytmiki i programowania - wykład 3 Funkcje rekurencyjne Wyszukiwanie liniowe i binarne w tablicy

Informatyka I. Wykład 4. Tablice. Dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Strategia "dziel i zwyciężaj"

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

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

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Wyszukiwanie w BST Minimalny i maksymalny klucz. Wyszukiwanie w BST Minimalny klucz. Wyszukiwanie w BST - minimalny klucz Wersja rekurencyjna

Drzewa poszukiwań binarnych

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I

. Podstawy Programowania 1. Typy wyliczeniowe i jednowymiarowe tablice. Arkadiusz Chrobot. 29 listopada 2016

INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH

Elektrotechnika I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) Niestacjonarne (stacjonarne / niestacjonarne)

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

Wstęp do programowania

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.

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

PDF stworzony przez wersję demonstracyjną pdffactory Pro Program 15

. Podstawy Programowania 2. Drzewa bst - część druga. Arkadiusz Chrobot. 12 maja 2019

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Wprowadzenie do programowania

Wykład 5. Operacje na tablicach

Programowanie Równoległe Wykład, CUDA praktycznie 1. Maciej Matyka Instytut Fizyki Teoretycznej

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

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

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

Algorytmy i struktury danych

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania 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)!

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

Sortowanie. LABORKA Piotr Ciskowski

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Algorytmy i Struktury Danych

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

Wstęp do programowania

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

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

Matematyczne Podstawy Informatyki

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

Wykład 4. Sortowanie

Transkrypt:

emat zajęć: Algorytmy sortowania w języku C Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (Sortowanie) Kolejne zadania dotyczyć będą najprostszych w realizacji algorytmów sortowania. Algorytmy sortowania omówione zostały na wykładzie i ćwiczeniach. Celem obecnych zajęć jest nabycie praktycznej umiejętności implementacji algorytmów w języku C. Zadanie 1. Dany jest program: #include <stdio.h> #define 7 int dane[]={0,4,-2,3,5,1,-5}; void sort_babelkowe(int data[], int n); void main(void) { int i; // wypisanie poczatkowego stanu tablicy for(i=0;i<;i++) printf("%4d",dane[i]); //sortowanie babelkowe: sort_babelkowe(dane,); //wypisanie stnu tablicy po przesortowaniu for(i=0;i<;i++) printf("%4d",dane[i]); } void sort_babelkowe(int data[], int n) {} apisać funkcję sort_babelkowe, która stosując algorytm sortowania bąbelkowego dokona sortowania tablicy przekazanej do niej przez parametr data. Parametr n przechwytuje rozmiar tablicy. Poniżej umieszczono przykładowy algorytm sortowania bąbelkowego. Kod funkcji sortującej uzupełnić o wypisywanie stanu tablicy w każdej iteracji sortowania.

SAR data,n i=0 i<n-1 SOP j=n-1 j>i data[j-1]>data[j] tmp=data[j-1] data[j-1]=data[j] data[j]=tmp j=j-1 i=i+1

Zadanie 2. Dany jest program: #include <stdio.h> #define 7 int dane[]={0,4,-2,3,5,1,-5}; void sort_przez_wstawienie(int data[], int n); void main(void) { int i; // wypisanie poczatkowego stanu tablicy for(i=0;i<;i++) printf("%4d",dane[i]); //sortowanie przez wstawianie: sort_przez_wstawienie(dane,); //wypisanie stnu tablicy po przesortowaniu for(i=0;i<;i++) printf("%4d",dane[i]); } void sort_przez_wstawienie(int data[], int n) {} apisać funkcję sort_przez_wstawienie, która stosując algorytm sortowania przez wstawianie dokona sortowania tablicy przekazanej do niej przez parametr data. Parametr n przechwytuje rozmiar tablicy. Poniżej umieszczono przykładowy algorytm sortowania przez wstawianie. Kod funkcji sortującej uzupełnić o wypisywanie stanu tablicy w każdej iteracji sortowania.

SAR data,n i=0 i<n SOP tmp=data[i] j=i j>0 && tmp<data[j-1] data[j]=tmp i++ data[j]=data[j-1] j--

Zadanie 3. Dany jest program: #include <stdio.h> #define 7 int dane[]={0,4,-2,3,5,1,-5}; void sort_przez_wybieranie (int data[], int n); void main(void) { int i; // wypisanie poczatkowego stanu tablicy for(i=0;i<;i++) printf("%4d",dane[i]); //sortowanie przez wybieranie: sort_przez_wybieranie (dane,); //wypisanie stnu tablicy po przesortowaniu for(i=0;i<;i++) printf("%4d",dane[i]); } void sort_przez_wybieranie (int data[], int n) {} apisać funkcję sort_przez_wybieranie, która stosując algorytm sortowania przez wybieranie dokona sortowania tablicy przekazanej do niej przez parametr data. Parametr n przechwytuje rozmiar tablicy. Poniżej umieszczono przykładowy algorytm sortowania bąbelkowego. Kod funkcji sortującej uzupełnić o wypisywanie stanu tablicy w każdej iteracji sortowania.

SAR data,n i=0 i<n-1 SOP j=i+1 least=i j<n data[j]<data[least] least=j j++ tmp=data[least] data[least]=data[i] data[i]=tmp i++

Zadanie 4. (Zadanie nadobowiązkowe) Zaproponować implementację dowolnego innego algorytmu sortowania w języku C. Zagadnienie 2. (Przeszukiwanie binarne) Poniższe zadanie dotyczy implementacji algorytmu przeszukiwania binarnego w języku C wprowadzonego na wykładzie i ćwiczeniach. Zadanie 1. Dany jest program: #include <stdio.h> #define 7 int dane[]={-5,-2,0,1,3,4,5}; // przeszukiwanie binarne (wersja iteracyjna) int szuk_binarne_iter(int data[], int x, int n) // data - uporzadkowany ciag do przeszukania // x - element do wyszukania // n - ilosc elememtow w uporzadkowanym ciagu {} void main(void) { int i, x; // wypisanie poczatkowego stanu tablicy for(i=0;i<;i++) printf("%4d",dane[i]); // wyszukiwanie binarne - iteracyjne x=4; i=szuk_binarne_iter(dane,x,); printf("\n poszukiwano element:%4d",x); printf("\n indeks poszukiwanego elementu:%4d",i); } Zadaniem funkcji szuk_binarne_iter jest dokonanie poszukiwania binarnego wartości x w ciągu data o długości n. Funkcja na zwracać pozycję znalezionego elementu w ciągu, lub 1, gdy danej wartości nie odnaleziono. ależy pamiętać, że poszukiwanie binarne może się odbywać tylko w ciągu posortowanym. Poniżej zamieszczono propozycję realizacji algorytmu poszukiwania binarnego.

SAR data,x,n sukces=0 left=0 right=n-1 left<=right && sukces!=1 mid=(left+right)/2 right=mid-1 data[mid]<x data[mid]==x left=mid+1 sukces=1 sukces==1-1 mid SOP