diff --git a/README.ko-KR.md b/README.ko-KR.md index 964790da..fd5c48ff 100644 --- a/README.ko-KR.md +++ b/README.ko-KR.md @@ -10,8 +10,9 @@ _Read this in other languages:_ [_English_](https://github.com/trekhleb/javascript-algorithms/), -[简体中文](README.zh-CN.md), -[繁體中文](README.zh-TW.md) +[_简体中文_](README.zh-CN.md), +[_繁體中文_](README.zh-TW.md), +[_Polski_](README.pl-PL.md) > 우리는 주요 알고리즘에 대해 더 자세한 설명을 담은 책을 제작 중입니다. 만약 “JavaScript Algorithms” 책이 언제 출시되는지 알고 싶다면 @@ -242,29 +243,29 @@ Source: [Big O Cheat Sheet](http://bigocheatsheet.com/). ### 자료 구조 작업별 복잡도 -| 자료 구조 | 접근 | 검색 | 삽입 | 삭제 | 비고 | -| ----------------------- | :-------: | :-------: | :-------: | :-------: | :-------- | -| **배열** | 1 | n | n | n | | -| **스택** | n | n | 1 | 1 | | -| **큐** | n | n | 1 | 1 | | -| **연결 리스트** | n | n | 1 | 1 | | -| **해시 테이블** | - | n | n | n | 완벽한 해시 함수의 경우 O(1) | -| **이진 탐색 트리** | n | n | n | n | 균형 트리의 경우 O(log(n)) | -| **B-트리** | log(n) | log(n) | log(n) | log(n) | | -| **Red-Black 트리** | log(n) | log(n) | log(n) | log(n) | | -| **AVL 트리** | log(n) | log(n) | log(n) | log(n) | | -| **Bloom Filter** | - | 1 | 1 | - | 거짓 양성이 탐색 중 발생 가능 | +| 자료 구조 | 접근 | 검색 | 삽입 | 삭제 | 비고 | +| ------------------------ | :-------: | :-------: | :-------: | :-------: | :-------- | +| **배열** | 1 | n | n | n | | +| **스택** | n | n | 1 | 1 | | +| **큐** | n | n | 1 | 1 | | +| **연결 리스트** | n | n | 1 | 1 | | +| **해시 테이블** | - | n | n | n | 완벽한 해시 함수의 경우 O(1) | +| **이진 탐색 트리** | n | n | n | n | 균형 트리의 경우 O(log(n)) | +| **B-트리** | log(n) | log(n) | log(n) | log(n) | | +| **Red-Black 트리** | log(n) | log(n) | log(n) | log(n) | | +| **AVL 트리** | log(n) | log(n) | log(n) | log(n) | | +| **Bloom Filter** | - | 1 | 1 | - | 거짓 양성이 탐색 중 발생 가능 | ### 정렬 알고리즘 복잡도 -| 이름 | 최적 | 평균 | 최악 | 메모리 | 동일값 순서유지 | 비고 | +| 이름 | 최적 | 평균 | 최악 | 메모리 | 동일값 순서유지 | 비고 | | --------------------- | :-------------: | :-----------------: | :-----------------: | :-------: | :-------: | :-------- | -| **거품 정렬** | n | n2 | n2 | 1 | Yes | | -| **삽입 정렬** | n | n2 | n2 | 1 | Yes | | -| **선택 정렬** | n2 | n2 | n2 | 1 | No | | -| **힙 정렬** | n log(n) | n log(n) | n log(n) | 1 | No | | -| **병합 정렬** | n log(n) | n log(n) | n log(n) | n | Yes | | -| **퀵 정렬** | n log(n) | n log(n) | n2 | log(n) | No | 퀵 정렬은 보통 제자리(in-place)로 O(log(n)) 스택공간으로 수행됩니다. | -| **셸 정렬** | n log(n) | 간격 순서에 영향을 받습니다. | n (log(n))2 | 1 | No | | -| **계수 정렬** | n + r | n + r | n + r | n + r | Yes | r - 배열내 가장 큰 수 | -| **기수 정렬** | n * k | n * k | n * k | n + k | Yes | k - 키값의 최대 길이 | +| **거품 정렬** | n | n2 | n2 | 1 | Yes | | +| **삽입 정렬** | n | n2 | n2 | 1 | Yes | | +| **선택 정렬** | n2 | n2 | n2 | 1 | No | | +| **힙 정렬** | n log(n) | n log(n) | n log(n) | 1 | No | | +| **병합 정렬** | n log(n) | n log(n) | n log(n) | n | Yes | | +| **퀵 정렬** | n log(n) | n log(n) | n2 | log(n) | No | 퀵 정렬은 보통 제자리(in-place)로 O(log(n)) 스택공간으로 수행됩니다. | +| **셸 정렬** | n log(n) | 간격 순서에 영향을 받습니다. | n (log(n))2 | 1 | No | | +| **계수 정렬** | n + r | n + r | n + r | n + r | Yes | r - 배열내 가장 큰 수 | +| **기수 정렬** | n * k | n * k | n * k | n + k | Yes | k - 키값의 최대 길이 | diff --git a/README.md b/README.md index ad97decc..591f5148 100644 --- a/README.md +++ b/README.md @@ -11,10 +11,10 @@ with related explanations and links for further reading (including ones to YouTube videos). _Read this in other languages:_ -[简体中文](README.zh-CN.md), -[繁體中文](README.zh-TW.md), -[한국어](README.ko-KR.md), -[Polish](README.pl-PL.md) +[_简体中文_](README.zh-CN.md), +[_繁體中文_](README.zh-TW.md), +[_한국어_](README.ko-KR.md), +[_Polski_](README.pl-PL.md) > We’re writing a book that will clearly explain, in detail, the main algorithms. If you’d like to be notified when the “JavaScript Algorithms” book diff --git a/README.pl-PL.md b/README.pl-PL.md index b027394f..3694dba1 100644 --- a/README.pl-PL.md +++ b/README.pl-PL.md @@ -7,20 +7,26 @@ To repozytorium zawiera wiele przykładów JavaScript opartych na znanych algorytmach i strukturach danych. Każdy algorytm i struktura danych zawiera osobny plik README -wraz z powiązanymi wyjaśnieniami i odnośnikami do dalszego czytania (włącznie z tymi do YouTube videos). +wraz z powiązanymi wyjaśnieniami i odnośnikami do dalszego czytania +(włącznie z tymi do YouTube videos). _Read this in other languages:_ [_English_](https://github.com/trekhleb/javascript-algorithms/) -[简体中文](README.zh-CN.md), -[繁體中文](README.zh-TW.md), -[한국어](README.ko-KR.md) +[_简体中文_](README.zh-CN.md), +[_繁體中文_](README.zh-TW.md), +[_한국어_](README.ko-KR.md) -> Jesteśmy w trakcie pisania książki, która w jasny i specyficzny sposób, wyjaśni główne algorytmy. Jeżeli chcesz dostać powiadomienie o tym kiedy książka “JavaScript Algorithms†zostanie wydana,[kliknij tutaj](https://upscri.be/402324/). +> Jesteśmy w trakcie pisania książki, która w jasny i specyficzny sposób, +wyjaśni główne algorytmy. Jeżeli chcesz dostać powiadomienie o tym kiedy +książka “JavaScript Algorithms†zostanie wydana,[kliknij tutaj](https://upscri.be/402324/). ## Struktury Danych -Struktura danych to sposób uporządkowania i przechowywania informacji w komputerze żeby mogłaby być sprawnie dostępna i efektywnie zmodyfikowana. Dokładniej, struktura danych jest zbiorem wartości danych, relacjami pomiędzy nimi, zadaniami lub działaniami, które mogą dotyczyć danych. +Struktura danych to sposób uporządkowania i przechowywania informacji w +komputerze żeby mogłaby być sprawnie dostępna i efektywnie zmodyfikowana. +Dokładniej, struktura danych jest zbiorem wartości danych, relacjami +pomiędzy nimi, zadaniami lub działaniami, które mogą dotyczyć danych. `B` - Początkujący, `A` - Zaawansowany @@ -44,7 +50,9 @@ Struktura danych to sposób uporządkowania i przechowywania informacji w komput ## Algorytmy -Algorytm jest to skończony ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego rodzaju zadań. Sposób postępowania prowadzący do rozwiązania problemu. +Algorytm jest to skończony ciąg jasno zdefiniowanych czynności, koniecznych +do wykonania pewnego rodzaju zadań. Sposób postępowania prowadzący do +rozwiązania problemu. `B` - Początkujący, `A` - Zaawansowany @@ -127,7 +135,10 @@ znajdź wszystkie kombinacje, które tworzą określoną sumę ### Algorytmy według paradygmatu -Paradygmat algorytmiczny jest ogólną metodą lub podejściem, które jest podstawą projektowania klasy algorytmów. Jest abstrakcją wyższą niż pojęcie algorytmu, podobnie jak algorytm jest abstrakcją wyższą niż program komputerowy. +Paradygmat algorytmiczny jest ogólną metodą lub podejściem, które jest +podstawą projektowania klasy algorytmów. Jest abstrakcją wyższą niż +pojęcie algorytmu, podobnie jak algorytm jest abstrakcją wyższą niż +program komputerowy. * **Metoda Siłowa** - Sprawdza wszystkie możliwosci i wybiera najlepsze rozwiązanie. * `B` [Wyszukiwanie Liniowe](src/algorithms/search/linear-search) @@ -246,29 +257,29 @@ Poniżej umieszczamy listę najbardziej używanych Big O notacji i ich porównan ### Złożoność operacji struktury danych -| Struktura Danych | Dostęp | Szukaj | Umieszczanie | Usuwanie | Komentarze | -| ----------------------- | :-------: | :-------: | :-------: | :-------: | :-------- | -| **Szereg** | 1 | n | n | n | | -| **Sterta** | n | n | 1 | 1 | | -| **Kolejka** | n | n | 1 | 1 | | -| **Lista Powiązana** | n | n | 1 | 1 | | -| **Tablica funkcji mieszanej** | - | n | n | n | W wypadku idealnej funkcji skrótu koszt mógłby sie równać O(1) | -| **Binarne Drzewo Poszukiwań** | n | n | n | n | W przypadku zrównoważonych kosztów drzew byłoby O(log(n)) | -| **B-Drzewo** | log(n) | log(n) | log(n) | log(n) | | +| Struktura Danych | Dostęp | Szukaj | Umieszczanie | Usuwanie | Komentarze | +| ------------------------------- | :-------: | :-------: | :-------: | :-------: | :-------- | +| **Szereg** | 1 | n | n | n | | +| **Sterta** | n | n | 1 | 1 | | +| **Kolejka** | n | n | 1 | 1 | | +| **Lista Powiązana** | n | n | 1 | 1 | | +| **Tablica funkcji mieszanej** | - | n | n | n | W wypadku idealnej funkcji skrótu koszt mógłby sie równać O(1) | +| **Binarne Drzewo Poszukiwań** | n | n | n | n | W przypadku zrównoważonych kosztów drzew byłoby O(log(n)) | +| **B-Drzewo** | log(n) | log(n) | log(n) | log(n) | | | **Drzewa czerwono-czarne** | log(n) | log(n) | log(n) | log(n) | | -| **AVL Drzewo** | log(n) | log(n) | log(n) | log(n) | | -| **Filtr Blooma ** | - | 1 | 1 | - | Fałszywe dotatnie są możliwe podczas wyszukiwania | +| **AVL Drzewo** | log(n) | log(n) | log(n) | log(n) | | +| **Filtr Blooma** | - | 1 | 1 | - | Fałszywe dotatnie są możliwe podczas wyszukiwania | ### Sortowanie Tablic Złożoności Algorytmów -| Nazwa | Najlepszy | Średni | Najgorszy | Pamięć | Stabilność | Komentarze | -| --------------------- | :-------------: | :-----------------: | :-----------------: | :-------: | :-------: | :-------- | -| **Sortowanie bąbelkowe** | n | n2 | n2 | 1 | Yes | | -| **Sortowanie przez wstawianie** | n | n2 | n2 | 1 | Yes | | -| **Sortowanie przez wybieranie** | n2 | n2 | n2 | 1 | No | | -| **Sortowanie przez kopcowanie** | n log(n) | n log(n) | n log(n) | 1 | No | | -| **Sortowanie przez scalanie** | n log(n) | n log(n) | n log(n) | n | Yes | | -| **Szybkie sortowanie** | n log(n) | n log(n) | n2 | log(n) | No | Szybkie sortowanie jest zazwyczaj robione w miejsce O(log(n)) stosu przestrzeni | -| **Sortowanie Shella** | n log(n) | zależy od luki w układzie | n (log(n))2 | 1 | No | | -| **Sortowanie przez zliczanie** | n + r | n + r | n + r | n + r | Yes | r - największy numer w tablicy| -| **Sortowanie Radix** | n * k | n * k | n * k | n + k | Yes | k -długość najdłuższego klucza | +| Nazwa | Najlepszy | Średni | Najgorszy | Pamięć | Stabilność | Komentarze | +| ----------------------------------- | :-------------: | :-----------------: | :-----------------: | :-------: | :-------: | :-------- | +| **Sortowanie bąbelkowe** | n | n2 | n2 | 1 | Yes | | +| **Sortowanie przez wstawianie** | n | n2 | n2 | 1 | Yes | | +| **Sortowanie przez wybieranie** | n2 | n2 | n2 | 1 | No | | +| **Sortowanie przez kopcowanie** | n log(n) | n log(n) | n log(n) | 1 | No | | +| **Sortowanie przez scalanie** | n log(n) | n log(n) | n log(n) | n | Yes | | +| **Szybkie sortowanie** | n log(n) | n log(n) | n2 | log(n) | No | Szybkie sortowanie jest zazwyczaj robione w miejsce O(log(n)) stosu przestrzeni | +| **Sortowanie Shella** | n log(n) | zależy od luki w układzie | n (log(n))2 | 1 | No | | +| **Sortowanie przez zliczanie** | n + r | n + r | n + r | n + r | Yes | r - największy numer w tablicy| +| **Sortowanie Radix** | n * k | n * k | n * k | n + k | Yes | k -długość najdłuższego klucza | diff --git a/README.zh-CN.md b/README.zh-CN.md index 42b89866..4ea45f4d 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -9,8 +9,9 @@ _Read this in other languages:_ [_English_](https://github.com/trekhleb/javascript-algorithms/), -[繁體中文](README.zh-TW.md), -[한국어](README.ko-KR.md) +[_繁體中文_](README.zh-TW.md), +[_한국어_](README.ko-KR.md), +[_Polski_](README.pl-PL.md) > We’re writing a book that will clearly explain, in detail, the main algorithms. If you’d like to be notified when the “JavaScript Algorithms” book @@ -195,26 +196,26 @@ npm test -- 'playground' ### 数据结构操作的复杂性 -| 数据结构 | 连接 | 查找 | 插入 | 删除 | -| ----------------------- | :-------: | :-------: | :-------: | :-------: | +| 数据结构 | 连接 | 查找 | 插入 | 删除 | +| ---------------------- | :-------: | :-------: | :-------: | :-------: | | **数组** | 1 | n | n | n | -| **栈** | n | n | 1 | 1 | +| **栈** | n | n | 1 | 1 | | **队列** | n | n | 1 | 1 | -| **链表** | n | n | 1 | 1 | -| **哈希表** | - | n | n | n | -| **二分查找树** | n | n | n | n | -| **B树** | log(n) | log(n) | log(n) | log(n) | -| **红黑树** | log(n) | log(n) | log(n) | log(n) | -| **AVL树** | log(n) | log(n) | log(n) | log(n) | +| **链表** | n | n | 1 | 1 | +| **哈希表** | - | n | n | n | +| **二分查找树** | n | n | n | n | +| **B树** | log(n) | log(n) | log(n) | log(n) | +| **红黑树** | log(n) | log(n) | log(n) | log(n) | +| **AVL树** | log(n) | log(n) | log(n) | log(n) | ### 数组排序算法的复杂性 | 名称 | 最优 | 平均 | 最坏 | 内存 | 稳定 | | --------------------- | :-------: | :-------: | :-----------: | :-------: | :-------: | -| **冒泡排序** | n | n^2 | n^2 | 1 | Yes | -| **插入排序** | n | n^2 | n^2 | 1 | Yes | -| **选择排序** | n^2 | n^2 | n^2 | 1 | No | -| **堆排序** | n log(n) | n log(n) | n log(n) | 1 | No | -| **归并排序** | n log(n) | n log(n) | n log(n) | n | Yes | -| **快速排序** | n log(n) | n log(n) | n^2 | log(n) | No | -| **希尔排序** | n log(n) | 取决于差距序列 | n (log(n))^2 | 1 | No | +| **冒泡排序** | n | n^2 | n^2 | 1 | Yes | +| **插入排序** | n | n^2 | n^2 | 1 | Yes | +| **选择排序** | n^2 | n^2 | n^2 | 1 | No | +| **堆排序** | n log(n) | n log(n) | n log(n) | 1 | No | +| **归并排序** | n log(n) | n log(n) | n log(n) | n | Yes | +| **快速排序** | n log(n) | n log(n) | n^2 | log(n) | No | +| **希尔排序** | n log(n) | 取决于差距序列 | n (log(n))^2 | 1 | No | diff --git a/README.zh-TW.md b/README.zh-TW.md index 4f7d4468..40f9ef62 100644 --- a/README.zh-TW.md +++ b/README.zh-TW.md @@ -8,8 +8,9 @@ _Read this in other languages:_ [_English_](https://github.com/trekhleb/javascript-algorithms/), -[简体中文](README.zh-CN.md), -[한국어](README.ko-KR.md) +[_简体中文_](README.zh-CN.md), +[_한국어_](README.ko-KR.md), +[_Polski_](README.pl-PL.md) > We’re writing a book that will clearly explain, in detail, the main algorithms. If you’d like to be notified when the “JavaScript Algorithms” book @@ -191,7 +192,7 @@ npm test -- 'playground' ### 資料結構運作複雜度 -| 資料結構 | 存取 | 搜尋 | 插入 | 刪除 | +| 資料結構 | 存取 | 搜尋 | 插入 | 刪除 | | ----------------------- | :-------: | :-------: | :-------: | :-------: | | **陣列** | 1 | n | n | n | | **堆疊** | n | n | 1 | 1 | @@ -206,11 +207,11 @@ npm test -- 'playground' ### 陣列排序演算法複雜度 | 名稱 | 最佳 | 平均 | 最差 | 記憶體 | 穩定 | -| --------------------- | :-------: | :-------: | :-----------: | :-------: | :-------: | +| ---------------------- | :-------: | :-------: | :-----------: | :-------: | :-------: | | **氣派排序** | n | n^2 | n^2 | 1 | Yes | | **插入排序** | n | n^2 | n^2 | 1 | Yes | | **選擇排序** | n^2 | n^2 | n^2 | 1 | No | | **Heap 排序** | n log(n) | n log(n) | n log(n) | 1 | No | -| **合併排序** | n log(n) | n log(n) | n log(n) | n | Yes | +| **合併排序** | n log(n) | n log(n) | n log(n) | n | Yes | | **快速排序** | n log(n) | n log(n) | n^2 | log(n) | No | -| **希爾排序** | n log(n) | 由gap sequence決定 | n (log(n))^2 | 1 | No | +| **希爾排序** | n log(n) | 由gap sequence決定 | n (log(n))^2 | 1 | No |