ááąá¸ ááŹá! ááąáŹááşá¸ááŤá¸áá˛áˇ ááŹááŹááźááşááťááşááᯠáááşá¸áá˛áˇáĄáŹááŻáśááᯠááŤáááşááźáááşá
áááşá ááşááąááŹááąáˇá áşááťáŹá¸áážááˇáş áááşáááşááŹááťážááş áá áşá áŻáśáá áşáᯠáá˝á˛áážáŹá¸ááąááźáŽáᯠáá˝áąá¸áááááŤá ááąááŹáááŻááşá¸áá˝ááş áĄááŻáśá¸ááźáŻááźáááşá ááąá¸áááşááźáŽá¸ áĄááŻáśá¸áááşááąáŹ SQLite ááž áĄá á˝ááşá¸áááş Teradata áĄáá ááá°ááŽááąáŹááąááŹááąáˇá áşááťáŹá¸á á˝áŹáážáááŤáááşá ááŤááąáááˇáş ááąááŹááąáˇá áş áááşáááŻáĄááŻááşááŻááşáááşáááŻááŹááᯠáážááşá¸ááźáá˛áˇ ááąáŹááşá¸ááŤá¸áĄáááşá¸áááşáá˛áážáááŤáááşá ááááşáááşááťážáážááááşáááŻááźááˇáşáážáŻáááş "howdoesarelationaldatabasework" áááŻáĄááŻáśá¸ááźáŻá áááşáááŻááşáááŻááşáážáŹáá˝áąáááŻááşááŤáááşá áááŻáˇáĄááźááş á¤ááąáŹááşá¸ááŤá¸ááťáŹá¸áááş áááŻááąáŹááşá¸ááŤáááşá áĄáááşá áááşáááş ááąáŹááşááŻáśá¸ááąáŤáş áĄáááŻááşá áŹá¸ áááşá¸áááŹááťáŹá¸ (BigDataá NoSQL áááŻáˇáááŻááş JavaScript) ááᯠáážáŹáá˝áąááąááŤá áááşá¸áááŻáˇ áĄááŻááşááŻááşááŻáśááᯠáážááşá¸ááźáááˇáş áááŻáááŻáááşáážááŻááşá¸ááąáŹ ááąáŹááşá¸ááŤá¸ááťáŹá¸ááᯠáááşáá˝áąáˇááááˇáşáááşá
áááşá ááşááąááŹááąáˇá áşááťáŹá¸áááş ááášááááŻááşáááşáááşá¸ááťáŹá¸á ááŻááąááá áŹáááşá¸ááťáŹá¸áážááˇáş á áŹáĄáŻááşááťáŹá¸áĄááźááşáá˝ááş áážááşá¸ááźáááş áĄáá˝ááşááąáŹááşá¸áá˝ááşá¸ááźáŽá¸ ááťááşá¸á ááŹááąáŹááşá¸ááąááŤáááŹá¸á
ááąáŹáˇááşáá˛ááąá¸ááŹá¸áá°áĄááąááźááˇáş ááťá˝ááşáŻááşááŹá¸ááááşááąáŹáĄááŹááᯠáĄááŻáśá¸ááźáŻááźááşá¸ááᯠááŻááşá¸ááŽá¸ááŤáááşá ááąááŹááąáˇá áşááťáŹá¸ááᯠáĄáážá áş áá ááťáąáŹáş áĄááŻáśá¸ááźáŻáá˛áˇáááşáááŻááŤá áĄááźáąáŹááşá¸ááźááťááşáážááááŤáááşá áážá áşáá˝áąááźáŹááŹááŹáá˛áˇáĄááťážá ááťá˝ááşááąáŹáşááąáˇá áĽáşááŻáśá¸ááąáá˛áˇ ááŽáá°á¸áááşá¸áá˛áˇááąáášááŹáááşáá˝áąááᯠáĄáážááşááááşááŹá¸áááşáááŻáˇ ááŹááŽááŹáá˛áˇááťáŽááźáŽá¸ áĄááťáááşááŻááşáá˛áˇáááşá áááşá ááşááąááŹááąáˇá áşááťáŹá¸ áá°áááŻáˇááźáąáŹááˇáş áĄáááşá¸á áááşáááşá áŹá¸áááşá áĄááŻáśá¸áááşááźáŽá¸ ááźááşááŻáśá¸áááŻááşááąáŹ áááąáŹáááŹá¸ááťáŹá¸ááᯠáĄááźáąááśááŹá¸áááşá. áĄáááşá áááşáááş ááąááŹááąáˇá áşáá áşááŻááᯠááŹá¸áááşáááş á áááşááŤáááşá áŹá¸ááąáŹáşáááşá¸ á¤ááťááşááźááˇáşááąáŹáĄááźáąáŹááşá¸áĄááŹááᯠá áąáˇá áąáˇá ááşá ááşááąáˇááŹáááş áĄááťáááş áááŻáˇáááŻááş á áááşááášáááážáááŤá á¤ááąáŹááşá¸ááŤá¸ááᯠáááşáážá áşáááşáááˇáşáááşá
á¤ááąáŹááşá¸ááŤá¸á ááąáŤááşá¸á ááşáááş áážááşá¸áááşá¸ááźááşááŹá¸ááąáŹáşáááşá¸á á¤ááąáŹááşá¸ááŤá¸á áááşáá˝ááşááťááşáážáŹ ááąááŹááąáˇá áşááᯠáááşáááŻáˇáĄááŻáśá¸ááźáŻááááşááᯠááŹá¸áááşáááşáááŻááşááŤá. áááŻáˇááźáąáŹááˇáşá áááŻá¸áážááşá¸ááąáŹááťáááşáááşáážáŻááąáŹááşá¸áááŻáážáŻáážááˇáş áĄááźáąááśááąá¸ááźááşá¸ááťááşááťáŹá¸ááᯠáááşáááşáááŻáˇááąá¸ááŹá¸ááááşááᯠáááşáááááˇáşáááşá ááąááśááťáąáŹááşá¸; áááŻááşáááş ááŽááąáŹááşá¸ááŤá¸ááᯠááŹá¸ááááşáááŻááşááŤá áĄá˛á፠áááşá¸áááááŻáˇ áá áşááŻáááşá¸áᲠááťááşáᏠááŤáážááşá¸ááźáááşá
áĄááťáááşáážáŻááşáá˝áąá¸áážáŻ algorithms (BigO) áá˛áˇáááŻáˇááąáŹ áá˝ááşááťá°ááŹáááášááśáĄááźáąááśááťáŹá¸áážááˇáş á áááşááŤáááşá áá áşááťááŻáˇá ááŽáááąáŹáááŹá¸ááᯠááŻááşá¸ááŽá¸áᏠááááŤáááşá ááŤááąáááˇáş áĄá˛ááŤáááŤáᲠááąááŹááąáˇá áşáĄáá˝ááşá¸á áážáŻááşáá˝áąá¸áážáŻáá˝áąááᯠááŹá¸áááşáááŻááşáážáŹ áááŻááşááŤáá°á¸á ááŽáĄááźáąáŹááşá¸áĄááŹá ááźáŽá¸ááŹá¸áá˛áˇáĄááźáąáŹááşá¸áĄááŹáááŻáˇ áĄáŹááŻáśá ááŻááşááŤáˇáááş ááŹáĄááąá¸ááźáŽá¸áááşáááşáá˛á: ááąááŹááąáˇá áşáááşáááŻááŻááşááąáŹááşáááşá SQL á áŻáśá ááşá¸ááąá¸. ááŻáᲠááááşáááşááąá¸áááşá áĄááźáąááśááąááŹááąáˇá áşáááąáŹáááŹá¸ááťáŹá¸ááŤááž ááąáŹááşá¸ááŤá¸áá˛áˇ áĄááŻáśá¸áážáŹ áááşá¸ááąáŤááşá¸áĄáŻáśá¸áĄáąáŹááşáážáŹ ááŹáá˝áąááźá áşááąáᲠáááŻááŹááᯠáááşá¸ áĄááźáśáĽáŹááşáá áşáᯠááá˝áŹá¸ááááˇáşáááşá
á¤áááşáážáŹ áážááşááťáŹá¸ááźáŽá¸ áááşá¸áááŹáááŻááşáᏠááąáŹááşá¸ááŤá¸áá áşááŻááşááźá áşááźáŽá¸ áĄááşááááŻááŽáááşááťáŹá¸áážááˇáş ááąááŹáá˝á˛áˇá ááşá¸ááŻáśááťáŹá¸á á˝áŹááŤáááşááąáŹááźáąáŹááˇáşá áááşá¸áááŻáááşáááş áĄááťáááşáá°ááŤá áĄááťááŻáˇááąáŹ áĄáá°áĄáááťáŹá¸áááş ááŹá¸áááşáááş áááşáá˛áááŻááşáááşá áá°áááŻáˇááᯠááťáąáŹáşáá˝áŹá¸áááŻááşááźáŽá¸ ááąááŻááť áĄááźáśáĽáŹááşááᯠááááŻááşááŤááąá¸áááşá
áááşáááŻáˇááźáŹá¸áá˝ááş áááŻááŻááááŻáážáá áąáááş á¤ááąáŹááşá¸ááŤá¸ááᯠáĄáááŻááşá¸ á áááŻááşá¸áá˝á˛ááŹá¸áááşá
- áĄáááˇáşááááˇáşáážááˇáş áĄáááˇáşááźááˇáş ááąááŹááąáˇá áş áĄá áááşáĄáááŻááşá¸ááťáŹá¸á ááźáŻáśááŻáśááŻáśá¸áááşááťááş
- Query Optimization ááŻááşáááşá¸á ááşá ááźáŻáśááŻáśááŻáśá¸áááşááťááş
- áá˝áąááąá¸áá˝áąáá°áážááˇáş Buffer Pool Management á ááźáŻáśááŻáśááŻáśá¸áááşááťááş
áĄááźáąááśááťáŹá¸ áááŻáˇ ááźááşáá˝áŹá¸áááş
áá˝ááşáá˛áˇááąáŹáážá áşááťáŹá¸ (ááąá¸áá˝áŹááąáŹá ááąá¸áá˝áŹááąáŹ áááŤá¸áá˝áąáˇáááşá¸) áá˝ááş developer ááťáŹá¸áááş áááşá¸áááŻáˇ coding ááŻááşáááˇáş ááŻááşááąáŹááşáážáŻáĄááąáĄáá˝ááşááᯠáĄáááĄááť áááá˛áˇááááşá áá°áááŻáˇáá˛áˇ áážáąá¸áá˝áąá¸áá˛áˇ áá˝ááşááťá°ááŹáá˝áąáá˛áˇ CPU áá˛áˇ Memory ááᯠáááźáŻááşá¸ááŽá¸áááŻááşáááŻáˇ áá°áááŻáˇáá˛áˇ algorithms áá˛áˇ ááąááŹáááşááąáŹááşááŻáśáá˝áąááᯠáážááŻáśá¸ááŹá¸áá˛áˇ áááááşá
á¤áĄáááŻááşá¸áá˝ááşá áááşá¸áááŻáˇáááş ááąááŹááąáˇá áşááᯠááŹá¸áááşáááş ááážááááźá áşáááŻáĄááşááąáŹááźáąáŹááˇáş á¤áááąáŹáááŹá¸áĄááťááŻáˇááᯠááťá˝ááşáŻááşáááááąá¸ááŤáááşá áááąáŹáááŹá¸áááŻáááşá¸ ááááşáááşááąá¸ááŤáááşá ááąááŹááąáˇá áşáĄáá˝ážááşá¸.
O(1) vs O(n2)
áááŻáĄááťáááşáá˝ááşá developer áĄááťáŹá¸áĄááźáŹá¸áááş algorithms ááĄááťáááşáážáŻááşáá˝áąá¸áážáŻááᯠáááŻáá ááŻááşááźáá˛... áážááşááŤáááşá
ááŤááąáááˇáş ááąááŹáĄááťáŹá¸ááźáŽá¸áá˛áˇ áááşááśáá˛áˇáĄá፠(ááąáŹááşááąáŤááşá¸ááťáŹá¸á á˝áŹ áááźáąáŹááŤáá°á¸) ááŤáážáááŻááş ááŽááŽá áášáááˇáşáá˝áąáá˛áˇ ááŻááşá¸áááşááąááááş ááŽáááąáŹáááŹá¸ááᯠááŹá¸áááşáááŻáˇ áĄááąá¸ááźáŽá¸ááŹááŤáááşá áááşá áááşáá°á¸áááŻááşáááşáĄáááŻááşá¸á ááąááŹááąáˇá áşááťáŹá¸áááş áĄááźáąáĄááąáážá áşááŻááŻáśá¸ááᯠáááŻááşáá˝ááşááźáąáážááşá¸ááááşááźá áşáááşá áĄáážááşááááŻáˇáĄáá˝ááş áááşá¸ááᯠáááŻáĄááşááŹáááşáááŻááźáŽá¸ áĄááťáááşááŻááşá áąáážáŹ áááŻááşáá°á¸á áááşá¸áááş ááąáŹááşáááŻááşá¸áá˝ááş ááŻááşááťá ááááşáĄááźáąááś áááŻáááŻááąáŹááşá¸áá˝ááşáĄáąáŹááşááźáŻááŻááşááźááşá¸á áááąáŹáááŹá¸ááᯠááŹá¸áááşáááş áá°ááŽááąá¸ááááˇáşáááş (ááąá¸á based optimization).
ááśáá°ááťááş
algorithm ááĄááťáááşáážáŻááşáá˝áąá¸áážáŻ ááąá¸ááŹá¸ááąáŹááąááŹáááŹááĄáá˝ááş ááźáŽá¸ááźáąáŹááşáááş algorithm áá áşááŻáááş áááşááťážááźáŹáááşááᯠááźááˇáşáážáŻáááş áĄááŻáśá¸ááźáŻáááşá. á¤áážáŻááşáá˝áąá¸áážáŻáááŻááąáŹáşááźáááşá ááťá˝ááşáŻááşáááŻáˇáááş ááźáŽá¸ááŹá¸ááąáŹ O áááşášááťáŹáĄáážááşáĄááŹá¸ááᯠáĄááŻáśá¸ááźáŻááŤáááşá ááąá¸ááŹá¸ááąáŹáááˇáşáá˝ááşá¸áážáŻáĄááąáĄáá˝ááşáĄáá˝ááş algorithm áá áşááŻáĄáá˝ááş ááŻááşááąáŹááşáážáŻáááşááťážáááŻáĄááşááźáąáŹááşá¸ ááąáŹáşááźáááˇáş ááŻááşááąáŹááşááťááşááźááˇáş á¤áĄáážááşáĄááŹá¸ááᯠáĄááŻáśá¸ááźáŻááŹá¸áááşá
áĽáááŹáĄáŹá¸ááźááˇáşá "ᤠalgorithm áá˝ááş áážáŻááşáá˝áąá¸áážáŻ O(some_function()))" ááŻááźáąáŹááąáŹáĄááŤá algorithm áááş ááąááŹáááŹááĄááťááŻáˇááᯠááŻááşááąáŹááşáááş some_function(a_certain_amount_of_data) áááŻáĄááşáááşáᯠáááŻáááŻáááşá
áááŻáááŻáˇ ááąááŹáááŹáá áĄááąá¸áááźáŽá¸ááŤáá°á¸ **áááŻááşáááş ** ááąááŹáááŹááááŻá¸ááŹáááşáážááˇáşáĄááťáž áááşáááşáážáŻáĄááąáĄáá˝ááş áááşááťážáááŻá¸ááŹáááş. áĄááťáááşáážáŻááşáá˝áąá¸áážáŻáááş ááááťááąáŹááŻááşááąáŹááşáážáŻáĄááąáĄáá˝ááşááᯠáááąá¸áááŻááşááąáŹáşáááşá¸ áĄááąáŹááşáĄáááşááąáŹáşááťáááşááᯠáááˇáşáážááşá¸áááş áááşá¸áááşá¸ááąáŹááşá¸áá áşááŻááźá áşáááşá
á¤ááááşáá˝ááş áááşáááş ááá°ááŽááąáŹ algorithm time complexities áĄááťááŻá¸áĄá áŹá¸ááťáŹá¸áĄáá˝ááş áááˇáşáá˝ááşá¸ááąááŹáááŹááážááˇáş ááŻááşááąáŹááşááťááşáĄááąáĄáá˝ááşááᯠáááşáá˝áąáˇááźááşáááŻááşááŤáááşá áááşá¸áááŻáˇáááŻááźááááş ááąáŹáˇááá áşáááşá ááąá¸ááᯠáĄááŻáśá¸ááźáŻáá˛áˇáááşá áá áşáááşá¸áááŻáááąáŹáş ááąááŹáááŹááááş 1 ááž 1 ááŽááŽááśáĄáá ááťááşááźááşá á˝áŹ áááŻá¸ááŹááŤáááşá áááşá¸ááᯠááťá˝ááşáŻááşáááŻáˇ ááźááşáááŻááşáááş-
- O(1) áááŻáˇáááŻááş á ááşáááşáááźááş áážáŻááşáá˝áąá¸áážáŻáááş ááááşá¸ááąáááşáážáááąáááş (áááŻááşááŤá ááááşá¸ááąáážáŻááşáá˝áąá¸áážáŻáᯠááąáŤáşáááŻáááşáááŻááşááŤ)á
- O(ááŻáśá¸(n)) ááąáᏠááŽááŽááśááąáŤááşá¸ááťáŹá¸á á˝áŹáá˛áˇááąáŹááş ááááˇáşááąááŤááąá¸áááşá.
- áĄáááŻá¸áá˝áŹá¸ááŻáśá¸áĄáááşáĄáᲠ- O(n2)á áááşáááşáážáŻáĄááąáĄáá˝ááş ááťááşááźááşá á˝áŹ áááŻá¸ááŹááŤáááşá.
- áĄááźáŹá¸ááąáŹ áážáŻááşáá˝áąá¸áážáŻ áážá áşááŻáááş ááťááşááźááşá á˝áŹ áááŻá¸ááŹáááşá
áĽáááŹ
ááąááŹáááŹá áĄáááşá¸áááşááźááˇáş O(1) áážááˇáş O(n2) áĄááźáŹá¸ áá˝áŹááźáŹá¸ááťááşáážáŹ áááşá¸ááŤá¸ááŤáááşá áĽáááŹáĄáŹá¸ááźááˇáşá áááˇáşáá˝ááş ááźááşá ááş 2000 ááᯠááŻááşááąáŹááşáááş áááŻáĄááşááąáŹ algorithm áá áşááŻáážááááş áááŻááźááŤá ááŻáˇá
- O(1) algorithm áááş áááˇáşáĄáŹá¸ áááşáááşáážáŻ 1 áᯠááŻááşááťáááşááźá áşáááşá
- O(log(n)) algorithm áááş áááˇáşáĄáŹá¸ ááŻááşááąáŹááşáážáŻ 7 áᯠááŻááşááťáááşááźá áşáááşá
- O(n) algorithm áááş áááˇáşáĄáŹá¸ áááşáááşáážáŻ 2 ááŻááşááťáááşááźá áşáááşá
- O(n*log(n)) algorithm áááş áááˇáşáĄáŹá¸ áááşáááşáážáŻ 14 ááŻááşááťáááşááźá áşáááşá
- O(n2) algorithm áááş áááˇáşáĄáŹá¸ ááŻááşááąáŹááşááťááşááąáŤááşá¸ 4 ááŻááşááťáááşááźá áşáááşá
O(1) áážááˇáş O(n2) áĄááźáŹá¸ áá˝áŹááźáŹá¸ááťááşáááş ááźáŽá¸ááŹá¸ááŻáśááááş (4 million operations) ááźá
áşááąáŹáşáááşá¸á áááˇáşááťááşááŻáśá¸áážáááşáááş áĄááťáááşáᏠ2 ms áĄááťáŹá¸ááŻáśá¸ ááŻáśá¸áážáŻáśá¸áááşááźá
áşáááşá áĄáážááşáááąáŹáˇ ááąááşááŽááááŻáááşááŹáá˝áąá ááŻááşááąáŹááşáááŻááşááŤáááşá
ááťá˝ááşááąáŹáşááźáąáŹáá˛áˇááááŻáᲠááąááŹáááŹáááťáŹá¸á á˝áŹáá˛áˇ áĄááŻááşááŻááşáá˛áˇáĄá፠ááŽáááąáŹáááŹá¸ááᯠáááááŻáˇá áĄááąá¸ááźáŽá¸ááŤááąá¸áááşá áĄáááşá á¤áĄááťáááşáá˝ááş algorithm áááş ááźááşá ááş 1 (ááąááŹááąáˇá áşáĄáá˝ááş áááŻááťážááąáŹááşáááŻááşááŤ)á
- O(1) algorithm áááş áááˇáşáĄáŹá¸ áááşáááşáážáŻ 1 áᯠááŻááşááťáááşááźá áşáááşá
- O(log(n)) algorithm áááş áááˇáşáĄáŹá¸ ááŻááşááąáŹááşáážáŻ 14 áᯠááŻááşááťáááşááźá áşáááşá
- O(n) algorithm áááş áááˇáşáĄáŹá¸ áááşáááşáážáŻ 1 ááŻááşááťáááşááźá áşáááşá
- O(n*log(n)) algorithm áááş áááˇáşáĄáŹá¸ áááşáááşáážáŻ 14 ááŻááşááťáááş
- O(n2) algorithm áááş áááˇáşáĄáŹá¸ áááşáááşáážáŻ 1 ááŻááşááťáááş
áááşášááťáŹáááźáąáááąá¸ááąáááˇáş O(n2) algorithm áá˛áˇ ááąáŹáşááŽááąáŹááşáááŻáˇ áĄááťáááşáážááááş (áážá áşááŻááąáŹááşááž!)á áĄáááşá áááşáááş áĄááźáŹá¸ 0 ááᯠááąááŹáááŹááááŻáˇ áááˇáşááŤáá áááş áá áşááąá¸áá áşááąáŹ áĄáááşáááş áĄááťáááşáááŤááááˇáşáááşá
áááŻáááşáá˛áá˝áŹá¸ááĄáąáŹááş
ááááşá¸áĄááťááşáĄáááş for:
- ááąáŹááşá¸ááąáŹ hash table áááŻáážáŹáá˝áąááźááşá¸áááş O(1) áá˝ááş áĄá áááşáĄáááŻááşá¸áá áşááŻááᯠáá˝áąáˇáážááááşá
- áááşááťááşááŽááąáŹ áá áşáááşáá áşáááşááᯠáážáŹáá˝áąááźááşá¸áááş O(log(n)) áá˝ááş ááááşááťáŹá¸ááᯠááŻááşááąá¸ááŤáááşá
- array áá áşááŻááᯠáážáŹáá˝áąááźááşá¸áááş O(n) ááźááˇáş ááááşááťáŹá¸ ááŻááşááąá¸áááşá
- áĄááąáŹááşá¸ááŻáśá¸ á áŽááźááşá¸ áĄááşááááŻááŽáááşááťáŹá¸áá˝ááş áážáŻááşáá˝áąá¸áážáŻ O(n*log(n)) áážááááşá
- áááąáŹááşá¸ááąáŹ á áŽááźááşá¸ áĄááşááááŻááŽáááşáá˝ááş áážáŻááşáá˝áąá¸áážáŻ O(n2) áážááááşá
áážááşááťááş- áĄáąáŹááşááŤáĄáááŻááşá¸ááťáŹá¸áá˝ááş ááťá˝ááşáŻááşáááŻáˇááẠᤠalgorithms áážááˇáş data structures áááŻáá˝áąáˇáááŤáááşá
áĄááťáááşáážáŻááşáá˝áąá¸áážáŻ algorithm áĄááťááŻá¸áĄá áŹá¸ááťáŹá¸á á˝áŹ áážáááŤáááşá
- ááťááşá¸ááťážááźá áşáááşáážááş
- áĄááąáŹááşá¸ááŻáśá¸ááźá áşáááşáážááş
- áážááˇáş áĄáááŻá¸ááŻáśá¸áĄááźáąáĄááą
áĄááťáááşáážáŻááşáá˝áąá¸áážáŻáááş áĄáááŻá¸ááŻáśá¸áĄááźáąáĄááąááźá áşáááşáááşá
ááťá˝ááşáŻááşáááş áĄááşááááŻááŽáááşá áĄááťáááşáážáŻááşáá˝áąá¸áážáŻáĄááźáąáŹááşá¸áááŻáᏠááźáąáŹááąááąáŹáşáááşá¸ áážáŻááşáá˝áąá¸áážáŻáááş-
- algorithm ááážááşááŹááşááŻáśá¸á á˝á˛áážáŻ
- disk I/O ááŻáśá¸á á˝á˛áážáŻ algorithm
ááŻááşááŤáááşá áĽáááŹá n2 áááş áááŻáááŻá¸áá˛áˇ ááąáŹááşáááşáá˝á˛ááźáżááŹáá˝áą áážááááşá
- n4: ááŤá ááźáąáŹááşá ááŹááąáŹááşá¸áááşá ááąáŹáşááźááŹá¸ááąáŹ áĄááşááááŻááŽáááşáĄááťááŻáˇáá˝ááş á¤áážáŻááşáá˝áąá¸áážáŻááťáŹá¸áážááááşá
- 3n: ááŤá áááŻááąáŹááşáááŻá¸ááąá¸áááşá á¤ááąáŹááşá¸ááŤá¸ááĄáááşáá˝ááşááťá˝ááşáŻááşáááŻáˇááźááşááááˇáş algorithms áá áşááŻáážáŹ á¤áážáŻááşáá˝áąá¸áážáŻááťáŹá¸áážááááş (áááşá¸ááᯠdatabases ááťáŹá¸á á˝áŹáá˝ááş áĄáážááşááááşáĄááŻáśá¸ááźáŻáááş)á
- factorial n- ááąááŹáááŹááĄáááşá¸áááşááźááˇáşáááş áááˇáşááááşááťáŹá¸ááᯠáááşáááˇáşáĄááŤááťáž ááážááááşáááŻááşááŤá
- nn : ááŽááᯠáážáŻááşáá˝áąá¸áážáŻáá˝áą ááźáŻáśááŹááááş ááŤá áááşá¸áá˛áˇ áážáŻááşáážáŹá¸áážáŻáááşáááşá ááááşááŹá¸áááŻáˇ áááŻááˇáşáááŻáááŻááş ááąá¸áááˇáşáááş...
áážááşááťááş- O ááźáŽá¸ááźáŽá¸ááŹá¸ááŹá¸ áááşáážááşááźááşá¸á áĄáážááşááááş áĄáááášááŤááşáá˝ááˇáşáááŻááťááşááᯠáĄááźáśáĽáŹááşáá
áşááŻááťáž áááąá¸ááááŤá ááŽááąáŹááşá¸ááŤá¸áážáŹ áááşáážáŻáááŻááşááŤáááşá
MergeSort
á áŻá ááşá¸áážáŻáá áşááŻááᯠá áŽáááş áááŻáĄááşááąáŹáĄá፠áááşááŹááŻááşáááşáááşá¸á ááŹáá˛? sort() function ááᯠááąáŤáşáááş... ááąáŹááşá¸ááźáŽ áĄááźáą... ááŤááąáááˇáş database áá áşááŻáĄáá˝ááşá áᎠsort() function áĄááŻááşááŻááşááŻáśááᯠááŹá¸áááşáááŤáááşá
ááąáŹááşá¸áá˝ááşááąáŹ á áŽááźááşá¸áááŻááşáᏠáĄááşááááŻááŽáááşááťáŹá¸á á˝áŹ áážááááşá áááŻáˇááźáąáŹááˇáş áĄááąá¸ááźáŽá¸ááŻáśá¸ááᯠááťá˝ááşáŻááşáĄáŹááŻáśá ááŻááşááŤáááş- ááąáŤááşá¸á ááşáĄááťááŻá¸áĄá áŹá¸. ááąááŹáĄááťááŻá¸áĄá áŹá¸áá˝á˛ááźááşá¸áááş áĄáááşááźáąáŹááˇáş áĄááŻáśá¸áááşáááşááᯠáááŻáĄááťáááşáá˝ááş áááşááŹá¸ááááşáááŻááşááąáŹáşáááşá¸ ááąá¸ááźááşá¸áážáŻáĄáŹá¸ áááŻáááŻááąáŹááşá¸áá˝ááşáĄáąáŹááşááźáŻááŻááşááźááşá¸áĄáááŻááşá¸ááᯠáĄááźáŽá¸ááŻááşááąáŹááşáááˇáşááŤáááşá áááŻáˇáĄááźááşá ááąáŤááşá¸á ááşá¸ááźááşá¸áĄááťááŻá¸áĄá áŹá¸ááᯠááŹá¸áááşááźááşá¸áááş ááŻáśááąááŹááąáˇá áşáá°á¸ááąáŤááşá¸ááąáŹááşáá˝ááşáážáŻááŻááąáŤáşááąáŹ ááŻáśááąááŹááąáˇá áşááᯠááąáŹááşáááŻááşá¸áá˝ááş ááŹá¸áááşáááş áá°ááŽááąá¸ááŤáááşá áĄáážá˛áˇááąáŤááťá¸ áá°á¸ááąáŤááşá¸ (ááąáŤááşá¸á ááşá¸ááźááşá¸áĄáááşá¸).
ááąáŤááşá¸á ááşá¸ááŤá
ááťáŹá¸á á˝áŹááąáŹ áĄááŻáśá¸áááşááąáŹ áĄááşááááŻááŽáááşááťáŹá¸áá˛áˇáááŻáˇáááşá ááąáŤááşá¸á ááşá¸ááźááşá¸áááş áážááˇáşáá˝ááşáá áşááŻáĄááąáŤáş áá°áááşáááş- áĄáá˝ááşáĄá áŹá¸ N/2 áĄááťááŻá¸áĄá áŹá¸áá˝á˛ááŹá¸ááąáŹ áááşá¸ááťááşá¸áážáŻ 2 ááŻááᯠááąáŤááşá¸á ááşááźááşá¸áááş N-ááźááşá ááşáá˝á˛ááŹá¸ááąáŹ áááşá¸ááťááşá¸áážáŻáááŻáˇ N ááŻááşááąáŹááşááťááşááťáŹá¸áááŻáᏠááŻááşááťááŤáááşá á¤ááŻááşááąáŹááşááťááşááᯠááąáŤááşá¸á ááşá¸ááźááşá¸ááŻááąáŤáşáááşá
áááŻá¸áážááşá¸ááąáŹ áĽáááŹáá áşááŻááźááˇáş áááşá¸áááş ááŹáááŻáááŻáááŻáááşááᯠááźááˇáşááźááŤá ááŻáˇá
á¤ááŻáśáááş ááąáŹááşááŻáśá¸áá˝á˛ááŹá¸ááąáŹ 8-element array áááŻáááşááąáŹááşáááşá áááşáááş 2 4-element arrays áááş áá áşááźáááşáááşááŻááşáááş áááŻáĄááşááźáąáŹááşá¸ ááźááááşá ááźááşá ááş 4 ááŻá ááŻáśá¸ááᯠá áŽááŹá¸ááźáŽá¸ááŹá¸ááźá áşááąáŹááźáąáŹááˇáş-
- 1) áááşáááş array áážá áşááŻáá˝ááş áááşáážáááźááşá ááşáážá áşááŻááŻáśá¸ááᯠáážááŻááşá¸áážááşá፠(áĄá áá˝ááş áááşáážá = ááá)á
- 2) áááŻáˇááąáŹááş áĄááąá¸ááŻáśá¸ááᯠáá°á 8 element array áá˝ááşáááˇáşááŤá
- 3) áĄááąá¸ááŻáśá¸ááźááşá ááşááᯠáááşáá°ááŹá¸áááˇáş array áážá ááąáŹááşááźááşá ááşáááŻáˇ áá˝ážáąáˇááŤá
- áážááˇáş 1,2,3 ááᯠarray áá áşááŻá ááąáŹááşááŻáśá¸ááźááşá ááşáááŻáˇ ááąáŹááşáááşáĄáá ááźááşááŻááşááŤá
- áááŻáˇááąáŹááş áĄááźáŹá¸ array á ááťááşááźááşá ááşááťáŹá¸ááᯠáá°á áááşá¸áááŻáˇááᯠ8 element array áá˝ááş áááˇáşáá˝ááşá¸ááŤá
4-element array áážá áşááŻááŻáśá¸ááᯠá áŽááŹá¸ááąáŹááźáąáŹááˇáş áááşá¸áááş áĄááŻááşááŻááşááąáŹááźáąáŹááˇáş ááᯠarray ááťáŹá¸áá˝ááş "ááźááşáá˝áŹá¸" áááş ááááŻáĄááşááŤá
ááᯠááťá˝ááşáŻááşáááŻáˇáááş áážááˇáşáá˝ááşááᯠááŹá¸áááşááźáŽá¸á á¤ááąááŹáá˝ááş ááąáŤááşá¸á ááşá¸áááşáĄáá˝ááş ááťá˝ááşáŻááşá pseudocode ááźá áşáááş-
array mergeSort(array a)
if(length(a)==1)
return a[0];
end if
//recursive calls
[left_array right_array] := split_into_2_equally_sized_arrays(a);
array new_left_array := mergeSort(left_array);
array new_right_array := mergeSort(right_array);
//merging the 2 small ordered arrays into a big one
array result := merge(new_left_array,new_right_array);
return result;
ááąáŤááşá¸á ááşá¸ááźááşá¸áĄááťááŻá¸áĄá áŹá¸áááş ááźáżááŹááᯠááąá¸áááşááąáŹááźáżááŹááťáŹá¸áĄááźá áş áá˝á˛ááŻááşááźáŽá¸ áá°áááźáżááŹáááááşáááŻááážááááş ááąá¸áááşááąáŹááźáżááŹááťáŹá¸áááááşááťáŹá¸ááᯠáážáŹáá˝áąá፠ᤠalgorithm ááᯠááŹá¸ááááşááŤá á áááşááá°ááŤáážááˇáşá áááááŻáśá¸ááźááşáá°á¸ááŹááąáŹáˇ ááŹá¸ááááşáá°á¸á áĄá˛ááŤá áááşá¸áááŻáá°ááŽáááŻááşáááş áᎠalgorithm ááᯠtwo-phase algorithm áĄááźá áş ááŤááźááşáááş-
- Division áĄáááˇáşá array ááᯠááąá¸áááşááąáŹ array ááťáŹá¸áĄááźá áş áááŻááşá¸ááźáŹá¸ááŤáááşá
- á áŽá áĽáşááźááşá¸áĄáááˇáşáááş áááŻááźáŽá¸ááąáŹ array áááŻáá˝á˛áˇá ááşá¸áááş ááąá¸áááşááąáŹ array ááťáŹá¸ááᯠááąáŤááşá¸á ááşááŹá¸áááş (áá°ááŽááśááᯠáĄááŻáśá¸ááźáŻá) ááźá áşáááşá
áááŻááşá¸áĄáááˇáş
áááŻááşá¸ááźáŹá¸ááźááşá¸áĄáááˇáşáá˝ááşá array ááᯠáĄáááˇáş 3 áááˇáşááźááˇáş áá°áá áş array ááťáŹá¸áĄááźá áş áááŻááşá¸ááźáŹá¸ááŹá¸áááşá áááŹá¸áááşááźáąáážááşá¸áĄááąáĄáá˝ááşáážáŹ log(N) (N=8á log(N) = 3) ááááşá¸á ááźá áşáááşá
ááŤááᯠááŤáááşáááŻáááá˛á
ááŤá ááŹááşááźáŽá¸áážááşááŤá á ááŹá¸ááŻáśá¸ - áááşášááťáŹá áĄáá°áĄááážáŹ áĄáááˇáşáá áşááŻá áŽáááş áá°á array á áĄáá˝ááşáĄá áŹá¸ááᯠ2 ááźááˇáş áááŻááşá¸ááźáŹá¸ááŹá¸áááşá áĄáááˇáşáĄááąáĄáá˝ááşáááş áá°á array ááᯠáážá áşáááŻááşá¸áá˝á˛áááŻááşáááˇáş áĄááźáááşáĄááąáĄáá˝ááşááźá áşáááşá á¤áááşáážáŹ ááąáŹáˇááá áşáááş (base 2) á ááááťááąáŹ áĄáááášááŤááşáá˝ááˇáşáááŻááťááşááźá áşáááşá
á áŽááźááşá¸áĄáááˇáş
á áŽááźááşá¸áĄáááˇáşáá˝ááşá áááşáááş áá áşáá°áá áş (ááźááşá ááş) áááşá¸ááťááşá¸áážáŻááťáŹá¸ááźááˇáş á áááşáááşá áĄáááˇáşáá áşáááˇáşá áŽáá˝ááş áááşáááş ááąáŤááşá¸á ááşá¸ááŻááşááąáŹááşáážáŻááťáŹá¸á á˝áŹááᯠááťááˇáşááŻáśá¸ááźáŽá¸ á áŻá áŻááąáŤááşá¸ááŻááşááťá ááááşáážáŹ N=8 ááŻááşááąáŹááşááťááşááťáŹá¸ááźá áşáááş-
- ááááĄáááˇáşáá˝ááş áááˇáşáá˝ááş áááşáááşáážáŻ 4 ááŻá ᎠááŻááşááťáááˇáş ááąáŤááşá¸á ááşá¸áážáŻ 2 ááŻáážááááşá
- ááŻááááĄáááˇáşáá˝ááş ááŻááşáááşá¸áá áşááŻá áŽáĄáá˝ááş 2 ááŻááŻááşááťááąáŹ ááąáŤááşá¸á ááşá¸áážáŻ 4 ááŻáážááááşá
- áááááĄáááˇáşáá˝ááş áááşáááşáážáŻ 1 áᯠááŻááşááťáááˇáş 8 ááąáŤááşá¸á ááşá¸áážáŻáážááááşá
log(N) áĄáááˇáşááťáŹá¸ áážáááąáŹááźáąáŹááˇáşá á áŻá áŻááąáŤááşá¸ááŻááşááťá ááááş N * log(N) ááŻááşááąáŹááşááťááşááťáŹá¸.
ááąáŤááşá¸á ááşá¸ááźááşá¸á áĄáŹá¸ááŹááťááşááťáŹá¸
ᤠalgorithm áááş áĄáááşááźáąáŹááˇáş áĄáá˝ááşáĄá á˝ááşá¸áááşááááşá¸á
ááŹááźá áşáááŻáˇáá˛áááŻááąáŹáˇ:
- array áĄáá áşááťáŹá¸ááᯠááááşááŽá¸áᲠáááˇáşáá˝ááşá¸áááˇáş array ááᯠáááŻááşáááŻááşáá˝ááşá¸ááśáááşáĄáá˝ááş áááşáááŻááŽááźáąááŹááᯠááťážáąáŹáˇááťáááş áááşá¸ááᯠáááşááźáąáŹááşá¸áá˛áááŻááşáááşá
áážááşááťááş- ᤠalgorithm áĄááťááŻá¸áĄá
áŹá¸ááᯠááąáŤáşáááşá
- ááááŹáááşáážáŹá¸ááąáŹ áá áşá áˇáş I/O áĄááąáŤáşááž áááŤáááşáᲠáá áşááąááŹáážááˇáş áááşáááŻááŽáĄáááşá¸áááşááᯠáá áşááťáááşáááşá¸áá˝ááş áĄááŻáśá¸ááźáŻáááş áááşá¸ááᯠáááşááźáąáŹááşá¸áááŻááşáááşá á áááşáá°á¸áážáŹ áááşáážáááŻááşááąáŹááşááąáááˇáş áĄá áááşáĄáááŻááşá¸ááťáŹá¸áááŻáᏠáážááşááŹááşáá˛áááŻáˇ áááˇáşáá˝ááşá¸áááşááźá áşáááşá 100-megabyte memory buffer ááźááˇáş multi-gigabyte table ááᯠá áŽáááş áááŻáĄááşááąáŹáĄááŤáá˝ááş áááşá¸áááş áĄááąá¸ááźáŽá¸ááŤáááşá
áážááşááťááş- ᤠalgorithm áĄááťááŻá¸áĄá
áŹá¸ááᯠááąáŤáşáááşá
- ááŻááşáááşá¸á ááşááťáŹá¸á á˝áŹ/ threads/servers ááťáŹá¸ááąáŤáşáá˝ááş ááŻááşááąáŹááşáááş áááşá¸ááᯠáááşááźáąáŹááşá¸áá˛áááŻááşáááşá
áĽáááŹáĄáŹá¸ááźááˇáşá ááźááˇáşááąááąáŹ ááąáŤááşá¸á
ááşá¸ááźááşá¸áĄááťááŻá¸áĄá
áŹá¸áááş áĄááááĄá
áááşáĄáááŻááşá¸ááťáŹá¸áá˛ááž áá
áşááŻááźá
áşáááşá
- ᤠalgorithm áááş áá˛ááťáŹá¸ááᯠáá˝ážáąáĄááźá áş ááźáąáŹááşá¸áá˛áááŻááşáááş (áĄáážááşáááşá)
á¤áĄááťááŻá¸áĄá
áŹá¸áá˝á˛ááźááşá¸áááŻááşáᏠáĄááşááááŻááŽáááşááᯠááąááŹááąáˇá
áşáĄááťáŹá¸á
ᯠ(áĄáŹá¸ááŻáśá¸áááŻááşááŤá) áá˝ááşáĄááŻáśá¸ááźáŻááąáŹáşáááşá¸ áááşá¸áááşáá
áşááŻáááşá¸áááŻááşááŤá áááŻááááťááşáááş ááŽáááˇáşáážáŹ áááşáááŻááşááŤáááşá
Arrayá Tree áážááˇáş Hash Table
ááᯠááťá˝ááşáŻááşáááŻáˇáááş áĄááťáááşáážáŻááşáá˝áąá¸áážáŻáážááˇáş áĄááťááŻá¸áĄá áŹá¸áá˝á˛ááźááşá¸áááŻááşáᏠáĄáá°áĄáááᯠááŹá¸áááşááŹááąáŹáĄááŤá ááąááŹáá˝á˛áˇá ááşá¸ááŻáś á ááŻáĄááźáąáŹááşá¸ ááźáąáŹááźáááˇáşááŤáááşá ááŤá áá°áááŻáˇááźáąáŹááˇáş áĄááąá¸ááźáŽá¸áááşá ááąááşááŽááąááŹááąáˇá áşááťáŹá¸ááĄááźáąááśááťáŹá¸ááźá áşááźáááşá. áááąáŹáááŹá¸áááŻáááşá¸ ááááşáááşááąá¸ááŤáááşá ááąááŹááąáˇá áşáĄáá˝ážááşá¸.
Array
áážá áşáááşááźááş array áááş áĄáááŻá¸áážááşá¸ááŻáśá¸ ááąááŹáá˝á˛áˇá ááşá¸ááŻáśááźá áşáááşá áááŹá¸áá áşááŻáĄáŹá¸ array áá áşááŻáĄááźá áş áá°ááááŻááşáááşá áĽáááŹáĄáŹá¸ááźááşáˇ:
ᤠ2 áááşááźááş array áááş áĄáááşá¸ááťáŹá¸áážááˇáş ááąáŹáşááśááťáŹá¸ááŤáážáááąáŹ áááŹá¸ááźá áşáááş-
- á áŹááźáąáŹááşá¸áá áşááŻá áŽáááş áĄááźáąáŹááşá¸áĄááŹáá áşááŻááᯠáááŻááşá áŹá¸ááźáŻáááşá
- áĄááźáąáŹááşá¸áĄááŹááᯠááąáŹáşááźááąáŹ ááąáŹáşááśááťáŹá¸áááş ááŻááşááášááááťáŹá¸ááᯠááááşá¸áááşá¸áááşá
- ááąáŹáşááśáá áşááŻá áŽáááş ááŽá¸ááźáŹá¸áĄááťááŻá¸áĄá áŹá¸áá áşááŻá áĄááťááşáĄáááş (ááááşá¸ááźááˇáşá á áŹááźáąáŹááşá¸á áááşá á˝á˛...) ááᯠááááşá¸áááşá¸ááŹá¸áááşá
ááąááŹááᯠááááşá¸áááşá¸ááźááşá¸áážááˇáş ááŻáśááąáŹáşááźááşá¸áĄáá˝ááş áááşá¸áááş áĄáááşááźáąááąáŹáşáááşá¸á ááááťááąáŹáááşáááŻá¸ááᯠáááşáážáŹáá˝áąáááˇáşáĄá፠áááşá¸áááş ááááˇáşááťáąáŹáşááŤá
áĽáááŹáĄáŹá¸ááźááˇáşá áááşáááş UK áá˝ááşáĄááŻááşááŻááşááąáŹááąáŹááşáťáŹá¸áĄáŹá¸ááŻáśá¸áááŻáážáŹáááŻááŤáá áááŻáĄáááşá¸áááş UK áážááŻááşáááŻááşááŻáśá¸ááźááşáááşáĄáááşá¸áá áşááŻá áŽáááŻááźááˇáşáážáŻáááşáááŻáĄááşáááşá áááşá¸áááş áááˇáşáĄáŹá¸ N áĄááąáŹááşá¸áĄáááşááźáŻááŻááşááŹáá˝ááş ááŻááşááťáááşááźá áşáááşááááşáážáŹ N - áááŻááşá¸áĄááąáĄáá˝ááş ááááŻá¸ááŤáá°á¸á ááŤááąáááˇáş áááŻááźááşáá˛áˇáááşá¸áááşá¸ áážááááŻááşáááŹá¸á áĄááŻá áá áşáááşáá˝áąáá˛áˇ áááşá¸áážáŽá¸áááŻáˇ áĄááťáááşááąáŹááşááźáŽá
áážááşááťááş- ááąááşááŽááąááŹááąáˇá áşáĄááťáŹá¸á áŻáááş áááŹá¸ááťáŹá¸ááᯠááááąáŹááşá á˝áŹááááşá¸áááşá¸áááşáĄáá˝ááş áááŻá¸ááťá˛áˇááŹá¸ááąáŹ áĄáááşá¸áĄááťááşá¸ááťáŹá¸ááᯠááśáˇáááŻá¸ááąá¸áááş- heap-organizedtables áážááˇáş index-organizedtablesá áááŻáˇááąáŹáş ááąáŹáşááśáĄáŻááşá áŻáá áşá áŻáážá ááŽá¸ááźáŹá¸áĄááźáąáĄááąáá áşááŻááᯠááťááşááźááşá á˝áŹáážáŹáá˝áąááźááşá¸áááźáżááŹááᯠáááşá¸á áááźáąáŹááşá¸áá˛ááŤá
ááąááŹááąáˇá áşáá áşáááşáážááˇáş áĄáá˝ážááşá¸ááááşá¸
áá˝ááážáŹáá˝áąáážáŻáá áşáááşáááş áĄáá°á¸áááŻááşáááŻááşáážáŻáá áşááŻááŤáážáááąáŹ áá˝áá áŻáśáá áşáááşááźá áşááźáŽá¸á node áá áşááŻá áŽáážá ááąáŹáˇáááş-
- áááşáááşáááşáá˝á˛áá˝ááş ááááşá¸áááşá¸ááŹá¸ááąáŹ ááąáŹáˇáĄáŹá¸ááŻáśá¸áááş ááźáŽá¸áááşá
- áážááşáááşááąáŹáá áşáááşáá˝á˛áá˝ááş ááááşá¸áááşá¸ááŹá¸ááąáŹ ááąáŹáˇáĄáŹá¸ááŻáśá¸áááşáááşá¸áááşá
áĄááźááşáĄáŹááŻáśáážáŹ ááŹáááŻáááŻáááŻáá˛áááŻáᏠááźááˇáşááźááĄáąáŹááş
á áááşáá°á¸
á¤áá áşáááşáá˝ááş N = 15 ááźááşá ááşááťáŹá¸áážááááşá 208 ááᯠáážáŹááąáááş áááŻááŤá ááŻáˇá
- ááąáŹáˇáááş 136 á root áážá áááşááŤáááşá 136<208 áážá áááşá node 136 áááŹáááşáĄáá˝á˛áááŻááźááˇáşááŤá
- 398>208 áááŻáˇááźáąáŹááˇáş ááťá˝ááşáŻááşáááş node 398 á áááşáááşáĄááźááşá¸ááᯠááźááˇáşááąáááşá
- 250>208 áááŻáˇááźáąáŹááˇáş ááťá˝ááşáŻááşáááş node 250 á áááşáááşáĄááźááşá¸ááᯠááźááˇáşááąáááşá
- 200<208 áááŻáˇááźáąáŹááˇáş ááťá˝ááşáŻááşáááş node 200 á ááŹáááşáĄááźááşá¸ááᯠááźááˇáşááąáááşá áááŻáˇááąáŹáş 200 áá˝ááş áážááşáááşááąáŹáá áşáááşááážáá áááşáááŻá¸ááážáááŤá (ááŹáááŻáˇáá˛áááŻááąáŹáˇ áĄá˛ááŤáážááááşá ááŹáááşá subtree 200 áážáŹáážááááş)á
áĄáᯠ40 ááᯠáážáŹááąáááş áááŻááŤá ááŻáˇ
- ááąáŹáˇáááş 136 á root ááž á áááşááŤáááşá 136 > 40 áážá áá node 136 á áááşáááşáĄááźááşá¸ááᯠááźááˇáşááŤáááşá
- 80 > 40á áááŻáˇááźáąáŹááˇáş ááťá˝ááşáŻááşáááş node 80 á áááşáááşáĄááźááşá¸ááᯠááźááˇáşááąáááşá
- áá=ááá node áážááááşá. ááťá˝ááşáŻááşáááş node áĄáá˝ááşá¸áážá row ID áááŻááá°ááźáŽá¸ (ááŻáśáá˝ááşáááźááŹá¸) áážááˇáşááąá¸ááŹá¸ááąáŹ row ID áĄáá˝ááşáááŹá¸áááŻááźááˇáşáážáŻááŤá
- áĄáááşá¸ ID áááŻááááźááşá¸á áááŹá¸áážáááąááŹáááşáážáŹáážááááşáááŻááŹááᯠáĄáááĄááťáááááŻááşá áąáá˛áˇáĄáá˝ááş ááťááşááťááşá¸ááźááşáá°áááŻááşááŤáááşá
ááąáŹááşááŻáśá¸áá˝ááşá áážáŹáá˝áąáážáŻáážá áşááŻá ááŻáśá¸áááş áá áşáááşáĄáá˝ááşá¸áážá áĄáááˇáşáĄááąáĄáá˝ááşááᯠááŻááşááťá áąáááşááźá áşáááşá ááąáŤááşá¸á ááşá¸ááźááşá¸áĄááźáąáŹááşá¸ áĄáááŻááşá¸ááᯠááąááąááťáŹááťáŹáááşááŤáá log(N) áĄáááˇáşááťáŹá¸áážáááźáąáŹááşá¸ áá˝áąáˇáááŤáááşá áá˝ááşáážááˇáşá áážáŹáá˝áąáážáŻááŻááşááťá ááááşáážááşáááşá¸(N), ááááŻá¸ááŤáá°á¸!
ááŤáááŻáˇááźáżááŹááᯠááźááşááźááˇáşááĄáąáŹááş
ááŤááąáááˇáş ááŤá ááááşááᯠá áááşáá°á¸áááşáááşáááşá ááŤááźáąáŹááˇáş ááŤáááŻáˇáá˛áˇ ááźáżááŹááᯠááźááşááźááˇáşááĄáąáŹááşá áááŻá¸áážááşá¸ááąáŹ ááááşá¸ááźááˇáşáĄá áŹá¸ ááááşáááŹá¸áážá áá áşá áŻáśáá áşáŚá¸ááááŻááşááśááᯠáááŻááşá áŹá¸ááźáŻáááˇáş á áŹááźáąáŹááşá¸áá áşááŻááᯠá áááşáá°á¸ááźááˇáşááŤá áááˇáşáá˝ááş áááŹá¸á "áááŻááşááś" áĄáá˝ááş (ááąáŹáşááś 3) ááŤáážáááąáŹ áá áşáááşáá áşáááşáážááááş áááŻááźááŤá ááŻáˇá
- UK áážáŹ áĄááŻááşááŻááşáá˛áˇ áá°áá˝áą ááááťááşáááş
- áááááşááźáááááşáááŻáááŻááşá áŹá¸ááźáŻáá˛áˇ node áááŻááááŻáˇáĄáá˝ááş áá áşáááşáááŻááźááˇáşááŤá
- "UKnode" áá˝ááş UK áĄááŻááşáááŹá¸áážááşáááşá¸ááťáŹá¸ááááşááąááŹáááŻáááşáá˝áąáˇááááˇáşáááşá
array ááᯠáááŻááşáááŻááşáĄááŻáśá¸ááźáŻááŤá á¤áážáŹáá˝áąáážáŻáááş N ááŻááşááąáŹááşááťááşááťáŹá¸áĄá áŹá¸ áážááşáááşá¸(N) ááŻááşááąáŹááşááťááşááťáŹá¸ááᯠááŻááşááťáááşááźá áşáááşá ááŻáá áááşááźáá˛áˇáᏠááąááŹááąáˇá áşáĄáá˝ážááşá¸.
áááˇáşáá˝ááş ááąáŹáˇááťáŹá¸ (áĽááᏠáĄáá˝ááşáĄáŻááşá áŻááťáŹá¸) ááᯠáážááŻááşá¸áážááşáááş ááŻááşááąáŹááşááťááşáá áşááŻáážááá áááşáááˇáşáááşáááşáĄáŻááşá ᯠ(á áŹááźáąáŹááşá¸á ááśááŤááşá 2 áááŻááşá¸á ááśááŤááşáážááˇáş á áŹááźáąáŹááşá¸á áááşá á˝á˛...) áĄáá˝ááş áĄáá˝ážááşá¸áá áşáááşááᯠáááşáááşááąáŹááşáááŻááşáááşá ááąáŹáˇááťáŹá¸ááźáŹá¸áá˝ááş áĄááááˇáşááąá¸áááşá (áááşá¸áááş ááąááŹááąáˇá áşáážá áááşáááˇáşáĄááźáąááśáĄááťááŻá¸áĄá áŹá¸ááťáŹá¸áĄáá˝ááşáááᯠáááşáááŻááşáááş)á
B+TreeIndex
á¤áá áşáááşáááş ááááťááąáŹáááşáááŻá¸áá áşááŻááážááááşáĄáá˝ááş ááąáŹááşá¸áá˝ááşá á˝áŹáĄááŻááşááŻááşááąáŹáşáááşá¸ áááŻáĄááşáááˇáşáĄááŤáá˝ááş ááźáżááŹááźáŽá¸áá áşááŻáážááááşá áááşáááŻá¸áážá áşááŻááźáŹá¸áá˝ááş ááźááşá ááşááťáŹá¸á á˝áŹááᯠááá°ááŤá. áá áşáááşáážá node áá áşááŻá áŽááᯠááźááˇáşáážáŻááźáŽá¸ á¤áááşáááŻá¸áážá áşááŻááźáŹá¸áážáááážá á á áşááąá¸ááááşááźá áşááźáŽá¸á áĄááźáąáŹááşá¸áážáŹ áááşá¸áááş O(N) ááŻááşááťáááşááźá áşáááşá áááŻáˇáĄááźááşá áááşáááş áá áşáááşáá áşááŻááŻáśá¸ááᯠáááşáááąáŹááźáąáŹááˇáş á¤ááŻááşááąáŹááşááťááşáááş disk I/O áĄáá˝ááş áĄáááşááźáąáááşáááŻááşááŤá ááááááąáŹááşááąáŹááş áĄááąáŹááşáĄáááşááąáŹáşáááŻáˇ áááşá¸áááşá¸áážáŹáááŻáˇ áááŻááŤáááşá áĄáááŻááşá¸áĄááźáŹá¸ááąáŹááşá¸áááŻááťááş. á¤ááźáżááŹáááŻááźáąáážááşá¸áááşá ááąááşááŽááąááŹááąáˇá áşááťáŹá¸áááş B+Tree ááŻááąáŤáşááąáŹááááşáá áşáááşááá˝ááşá¸ááśááŹá¸ááąáŹááŹá¸áážááşá¸áááŻáĄááŻáśá¸ááźáŻáááşá B+Tree áá áşáááşáá˝ááş-
- áĄááááˇáşááŻáśá¸ááŻáśáážááşááťáŹá¸áᏠ(áĄáá˝ááşááťáŹá¸)á áĄááťááşáĄáááşááááşá¸áááşá¸ááŤá (áááşá ááşáááŹá¸áážááĄáááşá¸ááťáŹá¸ááááşááąááŹ)
- ááťááşáá˛áˇ node áá˝áąá ááŽáážáŹ áááşá¸ááźáąáŹááşá¸áĄáá˝ááş áážááşáááşááąáŹ node áááŻáˇ áážáŹáá˝áąááąá ááş.
áááşáá˝áąáˇááźááşááááˇáşáĄáááŻááşá¸ á¤ááąááŹáá˝ááş ááąáŹááşáááş node ááťáŹá¸ (áážá áşááźáááş) áážáááŤáááşá áĄáážááşáážáŹá áááˇáşáá˝ááş áážááşáááşááąáŹ node (áááşá ááşáááŹá¸áážá áĄáááşá¸ááťáŹá¸ááááşááąááŹááᯠááááşá¸áááşá¸ááŹá¸áááˇáş) áážááşáááşááąáŹ node áááŻáážáŹáá˝áąáááş áá°ááŽááąá¸áááˇáş "ááŻáśá¸ááźááşááťááş nodes" áĄáááŻááąáŹááşá¸ node ááťáŹá¸áážááááşá áááŻáˇááąáŹáş áážáŹáá˝áąáážáŻáážáŻááşáá˝áąá¸áážáŻáááş O(log(N)) (ááąáŹááşáááş áĄáááˇáşáá áşááŻááŹáážáááąá¸áááş)á ááźáŽá¸ááŹá¸áá˛áˇ ááźáŹá¸ááŹá¸ááťááşáááąáŹáˇ áĄá˛ááŤááŤáá˛á áĄáąáŹááşááźáąáĄáááˇáşáážá node ááťáŹá¸áááş áááşá¸áááŻáˇá áááşááśáá°ááťáŹá¸áážááˇáş ááťáááşáááşááŹá¸áááşá.
ᤠB+Tree ááźááˇáşá áááşáááş 40 áážááˇáş 100 áĄááźáŹá¸áááşáááŻá¸ááťáŹá¸áááŻáážáŹáá˝áąááąááŤá-
- áááşáááş ááááşáá áşáááşáážááˇáşáá°ááąáŹ 40 (áááŻáˇáááŻááş 40 ááážáááťážááş 40 ááźáŽá¸ááąáŹááş áĄááŽá¸á ááşááŻáśá¸áááşáááŻá¸) ááᯠáážáŹáááşááŹáááŻáááşá
- áááŻáˇááąáŹááş áááş 40 ááźááˇáşáááşáĄáá áááŻááşáááŻááşáĄáá˝áąáááşááśáááˇáşááşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻá áĄáá˝áąáááşááśáá° 100 áŚá¸ááᯠá áŻááąáŹááşá¸ááŤá
M áááŻáááşááśáá°áá˝áąáˇááźáŽá¸ áá áşáááşáá˝ááş N node ááťáŹá¸áážááááşáááŻááźááŤá ááŻáˇá ááááşáá áşáááşáá˛áˇáááŻáˇ ááŽá¸ááźáŹá¸ node áá áşááŻááᯠáážáŹáá˝áąááŹáá˝ááş ááŻááşááťá ááááş áážááşáááşá¸(N)á ááŤááąáááˇáş áᎠnode ááᯠáááşáááźáŽáááŻááŹáá˛áˇá áá°áááŻáˇáá˛áˇ áááşááśáá°áá˝áąááᯠáááşáá˝ážááşá¸áá˛áˇ M ááŻááşáááşá¸áá˝áąáážáŹ M áááşááśáá°áá˝áąááᯠáááşáááááˇáşáááşá á¤áážáŹáá˝áąáážáŻáááş M+log(N) áᏠááŻááşááťáááş ááááşáá áşáááşáážá N ááŻááşááąáŹááşááťááşááťáŹá¸áážááˇáş áážááŻááşá¸áážááşáááˇáş ááŻááşááąáŹááşááťááşááťáŹá¸á áááŻáˇáĄááźááşá áááşáááş áĄááźááˇáşáĄááá áşáááş (M+log(N) node ááťáŹá¸ááŹ) áááŻáááşáááş ááááŻáĄááşááŤá áááŻáááŻáááşáážáŹ áá áşááşáĄááŻáśá¸ááźáŻáážáŻáááşá¸áááşá M áááş ááąá¸áááşáááş (áĽááᏠáĄáááşá¸ 200) áážááˇáş N áááş ááźáŽá¸ááŹá¸ááąáŹ (áĄáááşá¸ 1) ááźá áşááŤá ááźáŽá¸ááŹá¸ááąáŹ ááźáŹá¸ááŹá¸ááťááş áážáááááˇáşáááşá
ááŤááąáááˇáş ááŽáážáŹ ááźáżááŹáĄáá áşáá˝áą áážááááş (ááááş!) áĄáááşá áááşáááş ááąááŹááąáˇá áşáá˝ááş áĄáááşá¸áá áşááŻááᯠáááˇáşá፠áááŻáˇáááŻááş ááťááşááŤá (áááŻáˇááźáąáŹááˇáş áááşá ááş B+Tree áĄáá˝ážááşá¸áá˝ááş)
- B+Tree áĄáá˝ááşá¸áážá node ááťáŹá¸ááźáŹá¸ áĄá áŽáĄá áĽáşááᯠááááşá¸ááááşá¸ááŹá¸ááááşááźá áşááźáŽá¸á áááŻááşááŤá ááá˝á˛ááźáŹá¸ááŹá¸ááąáŹáá áşáááşáĄáá˝ááşá¸áážá node ááťáŹá¸ááᯠáážáŹáá˝áąáˇáááŻááşáááşáááŻááşááŤá
- B+Tree áá˝ááş ááźá áşáááŻááşááťáąáážáááąáŹ áĄáááˇáşáĄááááˇáşááŻáśá¸áĄáááˇáşááᯠááŹá¸áážáááááşá áááŻááşááŤá O(log(N)) áĄááťáááşáážáŻááşáá˝áąá¸áážáŻáááş O(N) ááźá áşááŹáááşááźá áşáááşá
áá áşáááşá¸áááŻáááąáŹáş B+Tree áááş ááááááŹáᏠáĄáąáŹáşááŤáážáŹááźáŽá¸ áááşááťááşááŽááąáááŤáááşá ááśááąáŹááşá¸á á˝áŹááźááˇáşá áááşá¸ááᯠá áááş ááťááşááźááşá¸áážááˇáş áááˇáşáá˝ááşá¸ááźááşá¸ ááŻááşááąáŹááşááťááşááťáŹá¸ááźááˇáş ááźá áşáááŻááşáááşá áááŻáˇááąáŹáş áááşá¸áááş ááŻááşááťá ááááşááźááˇáş ááŹááŤáááş- B+ áá áşáááşáá˝ááş áááˇáşáá˝ááşá¸ááźááşá¸áážááˇáş ááťááşááźááşá¸ O(log(N)) ááŻááşááťáááşá áĄá˛ááŤááźáąáŹááˇáş áááťááŻáˇá ááźáŹá¸áá°á¸áááşá áĄáá˝ážááşá¸ááááşá¸ááťáŹá¸ áĄáá˝ááşáĄááťá˝áśááŻáśá¸ááźááşá¸áááş ááąáŹááşá¸ááąáŹáĄááźáśáááŻááşááŤá. ááááşááŹá¸á áááşáááş áááŹá¸áá áşááŻáážá áĄáááşá¸áá áşááŻá áĄááźááşáááˇáşáá˝ááşá¸/áĄááşááááş/ááťááşááźááşá¸ááᯠáážáąá¸áá˝áąá¸á áąáááşááĄáááşááźáąáŹááˇáşáááŻááąáŹáş ááąááŹááąáˇá áşáááş áĄáá˝ážááşá¸áá áşááŻá áŽáĄáá˝ááş á áťáąá¸ááźáŽá¸ááąáŹ O(log(N)) ááŻááşááąáŹááşááťááşááᯠáĄááŻáśá¸ááźáŻá áááŹá¸ááĄáá˝ážááşá¸ááááşá¸ááťáŹá¸ááᯠáĄááşááááşááŻááşáááş áááŻáĄááşááąáŹááźáąáŹááˇáşááźá áşáááşá áááŻáˇáĄááźááşá áĄáá˝ážááşá¸ááááşá¸ááťáŹá¸áááˇáşááźááşá¸áááş áĄááŻááşááŹáááşáááŻáááŻááážáá áąáááşá áá˝áąááąá¸áá˝áąáá°áááşááąááťáŹ (ááąáŹááşá¸ááŤá¸ááĄááŻáśá¸áá˝ááş ááąáŹáşááźááŤáááşá)
áĄááąá¸á
áááşáĄááťááşáĄáááşááťáŹá¸áĄáá˝ááş Wikipedia ááąáŹááşá¸ááŤá¸áá˝ááş ááźááˇáşáážáŻáááŻááşááŤáááşá
áážááşááťááş- áĄáááˇáşááááˇáşááąáŹ áááŻáááŻááąáŹááşá¸áá˝ááşáĄáąáŹááşááźáŻááŻááşáážáŻááťáŹá¸ááźáąáŹááˇáş B+ áá áşáááşáááş ááŻáśá¸ááŻáśá¸ááťážááťážááááźá áşáááˇáşáááşáᯠá áŹáááşáá°áá áşáŚá¸á ááźáąáŹáá˛áˇáááşá
Hasshable
ááťá˝ááşáŻááşáááŻáˇáááąáŹááşááŻáśá¸áĄááąá¸ááźáŽá¸ááąáŹááąááŹáá˝á˛áˇá ááşá¸ááŻáśáážáŹ hash table ááźá áşáááşá áááşáááŻá¸ááťáŹá¸ááᯠáĄááźááşáážáŹáá˝áąáááŻáááˇáşáĄá፠áááşá¸áááş áĄáá˝ááşáĄááŻáśá¸áááşááŤáááşá áááŻáˇáĄááźááşá hash table áááŻááŹá¸áááşááźááşá¸áááş hash join ááŻááąáŤáşááąáŹ ááŻáśááąááŹááąáˇá áşáá°á¸ááąáŤááşá¸ááąáŹááşáá˝ááşáážáŻááᯠááąáŹááşáááŻááşá¸áá˝ááş ááŹá¸áááşáááş áá°ááŽááąá¸ááŤáááşá hash join) áĄááťááŻáˇááąáŹ áĄáá˝ááşá¸áááŻááşá¸áĄááŹááťáŹá¸ááᯠááááşá¸áááşá¸áááşáĄáá˝ááş á¤ááąááŹáá˝á˛áˇá ááşá¸ááŻáśáááŻáááşá¸ ááąááŹááąáˇá áşáážáááşá¸ áĄááŻáśá¸ááźáŻáááş (áĽáááŹá ááąáŹáˇáááşá áŹá¸áá˝á˛ áááŻáˇáááŻááş ááźáŹá¸ááśááąáááşááŽáááąáŹáááŹá¸áážá áşááŻááŻáśá¸ááᯠááąáŹááşáážáá˝áąáˇáááşá)
hash table áááş áááşá¸áááąáŹáˇááźááˇáş ááźááşá ááşáá áşááŻááᯠááťááşááźááşá á˝áŹ áážáŹáá˝áąáááŻááşáááˇáş ááąááŹáá˝á˛áˇá ááşá¸ááŻáśááźá áşáááşá hash table áá áşááŻáááşááąáŹááşáááşá áááşáááşáážááşáááşáááŻáĄááşáááş-
- ááąáŹáˇ áááşáááźááşá ááşááťáŹá¸áĄáá˝ááş
- hash ááŻááşááąáŹááşááťááş ááąáŹáˇááťáŹá¸áĄáá˝ááşá áá˝ááşááťááşááŹá¸ááąáŹ key hashe ááťáŹá¸áááş element ááťáŹá¸ááááşááąááŹáááŻááąá¸áááş (ááŻááąáŤáşáááşá áĄáááŻááşá¸ááťáŹá¸ ).
- ááąáŹáˇááťáŹá¸ááᯠáážááŻááşá¸áážááşáááş ááŻááşááąáŹááşááťááş. áážááşáááşááąáŹ áĄáááŻááşá¸ááᯠáááşáá˝áąáˇáážáááźáŽá¸áááşáážááˇáşá á¤áážááŻááşá¸áážááşáážáŻááᯠáĄááŻáśá¸ááźáŻá áĄáááŻááşá¸áĄáá˝ááşá¸ áááşáážáŹáá˝áąááąáááˇáş áĄá áááşáĄáááŻááşá¸ááᯠáážáŹáá˝áąáááŤáááşá
áááŻá¸áážááşá¸ááąáŹáĽáááŹ
áážááşá¸áážááşá¸áááşá¸áááşá¸ áĽáááŹáá áşááŻááᯠááźááˇáşááźááŤá ááŻáˇá
ᤠhash áááŹá¸áá˝ááş áĄáááŻááşá¸ áá áááŻááşá¸áážááááşá ááťááşá¸ááąáááŻáˇ áĄáááŻááşá¸ á áááŻááşá¸áᲠááŻáśááąáŹáşáá˛áˇáááşá ááŤááąáááˇáş áááşá¸á ááŹááşááąáŹááşá¸áááşáááŻáᏠááŤáááááşá ááŤááźáąáŹááˇáş ááťááşáá˛áˇ á ááŻáśááᯠáááşá¸áááŻááşáááŻááş ááŻáśááąáŹáşáá˝ááˇáşááąá¸áááşá ááąáŹáˇá hash function modulo 10 ááᯠááťá˝ááşááąáŹáşáĄááŻáśá¸ááźáŻáá˛áˇáááşá áá áşáááşá¸áááŻáááąáŹáşá ááťá˝ááşáŻááşáááş áááşá¸á áĄáááŻááşá¸áááŻáážáŹáá˝áąáááş ááźááşá ááşáááąáŹáˇá ááąáŹááşááŻáśá¸ááááşá¸áááŻáᏠááááşá¸áááşá¸ááŹá¸áááş-
- ááąáŹááşááŻáśá¸ááááşá¸áááş 0 ááźá áşááŤá ááźááşá ááşáááş segment 0 áááŻáˇ ááťááąáŹááşáááşá
- ááąáŹááşááŻáśá¸ááááşá¸áááş 1 ááźá áşááŤá ááźááşá ááşáááş segment 1 áááŻáˇ ááťááąáŹááşáááşá
- ááąáŹááşááŻáśá¸ááááşá¸áááş 2 ááźá áşááŤá ááźááşá ááşáááş á§áááᏠ2 áááŻáˇ ááťááąáŹááşáááşá
- ...
ááťá˝ááşááąáŹáşáĄááŻáśá¸ááźáŻáá˛áˇáááˇáş áážááŻááşá¸áážááşáážáŻááŻááşááąáŹááşááťááşáááş ááááşá¸ááźááˇáşáážá áşááŻááźáŹá¸áá˝ááş ááŽááťážááźááşá¸ááźá áşááŤáááşá
Element 78 ááᯠáááŻááťááşáááş áááŻááźááŤá ááŻáˇá
- hash table áááş 78 áĄáá˝ááş hash code áááŻáá˝ááşááťááşáááşá 8 ááźá áşáááşá
- hash table áááş segment 8 áááŻááźááˇáşááŤá áááşá¸áá˝áąáˇáážááááˇáşáááááźááşá ááşáážáŹ 78 ááźá áşáááşá
- 78 ááᯠáááşá¸áᎠááźááşáááŻáˇááąá¸áááşá
- áážáŹáá˝áąááźááşá¸ááŻááşáááşá¸ á ááŻáᏠááŻááşááťáááşá (áá áşááŻáááş hash áááşáááŻá¸áááŻáá˝ááşááťááşáááşáážááˇáş segment áĄáá˝ááşá¸áážáááźááşá ááşáááŻáážáŹáá˝áąáááşááąáŹááşáá áşááŻ)á
áĄáᯠáááşá¸ element 59 ááᯠáááťááşáááş áááŻááźááŤá ááŻáˇá
- hash table áááş 59 áĄáá˝ááş hash code áááŻáá˝ááşááťááşáááşá 9 ááźá áşáááşá
- hash table áááş segment 9 áá˝ááşáážáŹáá˝áąáááşá áááááŻáśá¸áá˝áąáˇáááąáŹááźááşá ááşáážáŹ 99 ááźá áşáááşá 99!=59 áážá áá element 99 áááş áážááşáááşááąáŹááźááşá ááşáááŻááşááŤá
- áá°ááŽááąáŹááŻáášáááááŻáĄááŻáśá¸ááźáŻá ááŻáááááźááşá ááş (á)á áááá (áá)á ...á ááąáŹááşááŻáśá¸ (áá) ááᯠáá°áááşá
- ááźááşá ááşááá˝áąáˇááŤá
- áážáŹáá˝áąááąá¸ ááŻááşáááşá¸ á áᯠááŻááşááťááŤáááşá.
ááąáŹááşá¸ááąáŹ hash ááŻááşááąáŹááşááťááş
áááşáážáŹáá˝áąááąáááˇáşáááşáááŻá¸ááąáŤáşáá°áááşá ááŻááşááťá ááááşáááş áá°ááŽáááşáááŻááşááŤá
áĄáááşá ááťá˝ááşáŻááşáááş ááąáŹáˇá hash function modulo 1 (áááşá¸áááş ááąáŹááşááŻáśá¸ááááşá¸ 000 ááŻáśá¸áááŻáá°ááźááşá¸) áááŻááźáąáŹááşá¸áá˛ááŤáá ááŻááááážáŹáá˝áąáážáŻáááş segment 000 áá˝ááşááźááşá ááşááťáŹá¸ááážááááˇáşáĄáá˝ááş ááŻááşááąáŹááşááťááş 6 ááŻááŹááŻááşááťááŤáááşá ááááˇáşá áááşááąáŤáşáážáŻáážáŹ áĄáá˝ááşááąá¸áááşááąáŹ ááźááşá ááşááťáŹá¸ááŤáážáááąáŹ ááŻáśá¸ááťáŹá¸ááᯠáááşááŽá¸áááˇáş ááąáŹááşá¸áá˝ááşááąáŹ hash ááŻááşááąáŹááşááťááşááᯠáážáŹáá˝áąáááşááźá áşáááşá.
ááťá˝ááşáŻááşááĽáááŹáá˝ááşá ááąáŹááşá¸ááąáŹ hash ááŻááşááąáŹááşááťááşáááŻáážáŹáá˝áąáááşáá˝ááşáá°áááşá ááŤááąáááˇáş ááŤá áááŻá¸áážááşá¸áá˛áˇ áĽáááŹáá áşááŻááŤá ááąáŹáˇááťááşá ááąáŹááşá¸áá˛áˇ hash function áááŻáážáŹááᏠáááŻáááşááŤáááşá
- string (áĽááᏠ- ááąáŹááşááŻáśá¸áĄáááş)
- á áŹááźáąáŹááşá¸ á ááźáąáŹááşá¸ (áĽááᏠ- áĄáááşáážááˇáş ááááĄáááş)
- á áŹááźáąáŹááşá¸ 2 ááźáąáŹááşá¸áážááˇáş áááşá á˝á˛ (áĽááᏠ- ááąáŹááşááŻáśá¸áĄáááşá ááááĄáááşáážááˇáş áá˝áąá¸ááášáááŹááş)
- ...
ááąáŹááşá¸ááąáŹ hash ááŻááşááąáŹááşááťááşááźááˇáşá hash table lookups áááş O(1) ááŻááşááťáááş.
Array áážááˇáş hash áááŹá¸
ááŹááźáąáŹááˇáş array áááŻáááŻáśá¸ááŹáá˛á
áááşá ááąá¸áá˝ááşá¸ááąáŹááşá¸á
- hash table áááşá¸ ááźá áşáááŻááşááŤáááşá áážááşááŹááşáá˛áááŻáˇ áá áşá áááşáá áşáááŻááşá¸ áááşááŹá¸áááşáá ááťááşáĄáááŻááşá¸ááťáŹá¸áááş disk ááąáŤáşáá˝ááşáážáááąáááŻááşáááşá
- array áá áşááŻááźááˇáş áááşáááş áážááşááŹááşáá˛áá˝ááş áááşáááŻááşááąááŹáá˝ááşááᯠáĄááŻáśá¸ááźáŻáááŤáááşá á áŹá¸áá˝á˛ááźáŽá¸áá áşááŻáśá¸ááᯠáá˝á˛ááťááąáááşá áĄáááşáááźááşááąááŹáá˝ááşááᯠáážáŹáá˝áąáááş áĄáá˝ááşáááşáá˛áááşá.
- hash table áá áşááŻáĄáá˝ááşá áááşáĄáááŻáážáááąáŹááąáŹáˇ (áĽáááŹá áááŻááşááśáážááˇáşáá°áááąáŹááşááŻáśá¸áĄáááş) ááᯠáááşáá˝áąá¸ááťááşáááŻááşááŤáááşá
áááŻáááŻáááážááááŻááŤá, áááşáĄááźáąáŹááşá¸ááąáŹááşá¸ááŤá¸áááŻáááşáážáŻáááŻááşááŤáááşá
source: www.habr.com