>> [MUSIC PŘEHRÁVÁNÍ]
>> ZAMYLA CHAN: První věc, kterou by mohl Oznámení o nálezu je, že jsme již
se kód napsaný pro nás.
To se nazývá rozdělení kódu.
Takže jsme nejen psát naše vlastní kód od nuly už.
Spíše jsme vyplňování dutin v nějakém pre-existujícího kódu.
>> Program find.c vyzve k zadání čísla vyplnit kupce sena, hledá
haystack pro uživatele předloženy jehly, a to tím, že volá druh a
vyhledávání, funkce definované v helpers.c.
Takže find.c je psáno již.
Vaším úkolem je napsat pomocníky.
>> Tak co budeme dělat?
Jsme se provádí dvě funkce.
Vyhledávání, která vrací hodnotu true, pokud hodnota se nachází v kupce sena, vrací
false pokud je tato hodnota není v kupce sena.
A pak jsme také provádí jakousi která setřídí pole s názvem hodnoty.
>> Takže pojďme řešit hledání.
Vyhledávání je v současné době prováděna jako lineární hledání, ale můžete dělat mnohem
lepší než to.
Lineární vyhledávání je realizován v O n času, což je poměrně pomalé.
I když to může vyhledávat jakýkoli seznam uveden na něj.
Vaším úkolem je provádět binární vyhledávání, který má běžet čas O log n.
To je docela rychlý.
>> Ale je tu podmínka.
Binární vyhledávání lze vyhledávat pouze díky předem roztříděných seznamech.
Proč je to tak?
>> No podívejme se na příklad.
Vzhledem k tomu, pole hodnot, kupka sena, budeme hledat
jehlu.
A v tomto případě, číslo tři.
Tak, že binární vyhledávání funguje tak, že Porovnáme-li střední hodnotu
pole s jehlou, stejně jako jak jsme otevřeli telefonní seznam do středu
Stránka v týdnu nulové.
>> Takže po porovnání střední hodnoty jehla, můžete odhodit buď
levá nebo pravá polovina pole utažením své meze.
V tomto případě, protože tři, naše jehla, je menší než 10, střední hodnota,
přímo vázané může snížit.
Ale snaží se, aby vaše hranice tak pevně, jak je to možné.
Je-li střední hodnota není jehla, pak víte, že nemusíte
zahrnout do vyhledávání.
Takže máš pravdu vázán lze utáhnout hledání hranice jen trošičku víc,
a tak dále a tak dále, dokud můžete najít jehlu.
>> Takže to, co se v pseudokódu vypadat?
No, když jsme stále hledají přes Seznam a ještě prvky
Podívejte se do bereme uprostřed seznamu, a porovnat, že střední hodnoty
naše jehla.
Pokud jsou stejné, pak to znamená, že máme našel jehlu a můžeme
return true.
>> V opačném případě, je-li jehla je menší než střední hodnota, pak to znamená, že
může vyřadit pravou polovinu, a jen hledat na levé straně pole.
V opačném případě budeme hledat na pravé straně pole.
A na závěr, pokud nemáte žádné zbývá hledat další prvky, ale můžete
nenašli jste jehlu ještě, pak se return false, protože jehla
rozhodně není v kupce sena.
>> Nyní užitečná věc o tomto pseudokódu v binární hledání je, že může být
interpretovat buď jako opakující se nebo rekurzivní implementace.
Tak to by bylo rekurzivní, pokud jste volali vyhledávací funkce v rámci hledání
fungovat na obou polovině pole.
Budeme pokrývat rekurzi trochu později Samozřejmě, ale vím, že to je
volba, pokud byste chtěli vyzkoušet.
>> Nyní se pojďme podívat na druhu.
Seřadit bere pole a číslo n, což je velikost pole.
Teď tam jsou různé typy druhů, a můžete se podívat na některé
šortky pro ukázky a vysvětlení.
Návratový typ pro naše Funkce třídění je neplatné.
Takže to znamená, že nejdeme vrátit jakoukoli nabídku od druhu.
Jsme skutečně změní velmi pole, který byl předán do nás.
>> A to je možné, protože pole jsou prošel odkazem v C. Nyní se budeme
viz více o tom později, ale Podstatný rozdíl mezi procházení
něco jako celé číslo a procházení v poli, je, že když
předat celé číslo, C je jen tak vytvořit kopii tohoto integer a projít
že do funkce.
Původní proměnné se nezmění Jakmile je funkce dokončena.
S pole, na druhé straně, to je nebudu dělat kopii, a budete
skutečně úpravách Velmi pole sám.
>> Takže jeden druh druhu je výběr třídění.
Výběr třídit funguje tak, že počínaje začátek, a pak iterovat
nad a najít nejmenší prvek.
A pak vyměnit, že nejmenší prvek s prvním.
A pak se přesunout na druhý prvek , Naleznete další nejmenší
prvek, a pak vyměnit, že se Druhým prvkem v poli, neboť
První element je již řazeno.
A tak se pak budete pokračovat za každou prvkem při určování nejmenší
hodnota a vymění ji.
>> Vždyť já se rovná 0, úplně první prvek na n minus 1, budete porovnávat
každá další hodnota po tom a najít index minimální hodnoty.
Jakmile zjistíte, index minimální hodnoty, můžete prohodit, že hodnota pole
minimální a řada I.
>> Dalším typem druhu, který můžete realizovat je bublina třídění.
Takže bubble sort přes seznamu iterace porovnání sousedních prvků a
vyměňovat prvky, které jsou ve špatném pořadí.
A to způsobem, největší prvek bude bubliny až do konce.
A seznam je seřazen jednou více prvky byly vyměněny.
>> Takže to jsou dva příklady druhu algoritmy, které můžete realizovat pro
Program find.
Jakmile dokončíte třídit, a vy jste provedeno hledání, budete hotovi.
Jmenuji se Zamyla, a to je CS50.
>> [MUSIC PŘEHRÁVÁNÍ]