Commit 6a116181 authored by Martin Mareš's avatar Martin Mareš
Browse files

04: Třídění a hledání

parent cb489294
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage[czech]{babel}
\usepackage{palatino}
\usepackage{verbatim}
\usetheme{Warsaw}
\title{Programování 1: Třídění a vyhledávání}
\author[Martin Mareš]{Martin Mareš\\\texttt{mj@ucw.cz}}
\institute{Katedra Aplikované Matematiky\\MFF UK Praha}
\date{2019}
\begin{document}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}{}
\setbeamerfont{title page}{family=\rmfamily}
\shorthandoff{"}
\begin{frame}
\titlepage
\end{frame}
\input ../slidemac.tex
% ----------------------------------------------------------------------
\begin{frame}{Binární vyhledávání v setříděném seznamu}
\verbatiminput{binarni-hledani-raw.py}
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Intermezzo: Formátovací řetězce}
\py{%
x=1\\
y=2\\
f"\{x\},\{y\}"
}{%
'1,2'
}
\py{%
f"\{x:5\} \{y:05\}"
}{%
'~~~~1 00002'
}
\py{%
z=1/3\\
f"\{z:.6\}"
}{%
'0.333333'
}
\py{%
f"\{1/3\}"
}{%
'0.3333333333333333'
}
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Třídění výběrem}
\verbatiminput{trideni-vyberem.py}
\end{frame}
% ----------------------------------------------------------------------
\end{document}
SLIDES=04-trideni.pdf
include ../Makerules
while l <= p:
stred = (l+p) // 2
print(f"[{l},{p}] {kde[stred]}")
if kde[stred] == co: # Našli jsme
print(f"Nalezeno na pozici {stred}")
break
elif kde[stred] < co:
l = stred + 1 # Jdeme doprava
else:
p = stred - 1 # Jdeme doleva
else:
print("Kde nic, tu nic")
kde = [11, 22, 33, 44, 55, 66, 77, 88]
co = int(input())
l = 0 # Hledáme v intervalu [l,p]
p = len(kde) - 1
while l <= p:
stred = (l+p) // 2
if kde[stred] == co: # Našli jsme
print("Nalezeno na pozici", stred)
break
elif kde[stred] < co:
l = stred + 1 # Jdeme doprava
else:
p = stred - 1 # Jdeme doleva
else:
print("Kde nic, tu nic")
#!/usr/bin/env python3
# Binární vyhledávání v setříděném seznamu
kde = [11, 22, 33, 44, 55, 66, 77, 88]
co = int(input())
# Hledané číslo se nachazí v intervalu [l, p]
l = 0
p = len(kde) - 1
while l <= p:
stred = (l+p) // 2
if kde[stred] == co: # Našli jsme
print("Nalezeno na pozici", stred)
break
elif kde[stred] < co:
l = stred + 1 # Jdeme doprava
else:
p = stred - 1 # Jdeme doleva
else:
print("Kde nic, tu nic")
#!/usr/bin/env python3
# Třídění opakovaným výběrem minima
x = [31, 41, 59, 26, 53, 58, 97]
n = len(x)
for i in range(n):
pmin = i
for j in range(i+1, n):
if x[j] < x[pmin]:
pmin = j
x[i], x[pmin] = x[pmin], x[i]
print(x)
......@@ -62,6 +62,7 @@ Značení:
- řezy
- list comprehension
- stringy
- formátování
# slévání setříděných posloupností
## Datové struktury (1)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment