2009-10-08 50 views
79

Có rất nhiều thảo luận về cấu trúc dữ liệu, nhưng tôi không thể tìm thấy danh sách đơn giản các cấu trúc dữ liệu và cách sử dụng thực tế của chúng. Tôi đang cố gắng nghiên cứu một cuộc phỏng vấn và tôi nghĩ điều này sẽ giúp tôi, cùng với nhiều người khác. Tôi đang tìm một cái gì đó như thế này:Sử dụng thực tế các cấu trúc dữ liệu khác nhau

cấu trúc dữ liệu - Ví dụ/Được sử dụng cho bảng

Hash - tra cứu dữ liệu nhanh chóng ... sau đó đưa ra một ví dụ

Mảng - ...

Cây nhị phân - ...

Nếu có tài nguyên như thế này ở đâu đó, vui lòng cho tôi biết.

Cảm ơn!

EDIT: Tôi có nghĩa là wikipedia là tốt và tất cả, nhưng trên hầu hết các trang họ không thực sự liệt kê sử dụng thực tế. Tôi đang tìm thứ gì đó hơn thế.

+0

Bạn có muốn đánh dấu một câu trả lời này câu hỏi? Có thể giúp người dùng tìm câu trả lời phổ biến nhất nhanh hơn. – MXMLLN

Trả lời

-1

Tôi nghĩ rằng điều đó là hợp lý hơn khi chỉ nghiên cứu các tính năng của cấu trúc dữ liệu.

Dựa trên kịch bản mà người phỏng vấn cung cấp cho bạn, hãy chọn câu hỏi phù hợp.

Tôi nói dối những người yêu cầu kỹ nghệ phần mềm và lập trình không sáng tạo.

1

Bất kỳ thứ hạng nào của các cấu trúc dữ liệu khác nhau sẽ ít nhất gắn liền với bối cảnh vấn đề. Nó sẽ giúp tìm hiểu cách phân tích hiệu suất thời gian và không gian của các thuật toán. Thông thường, "ký hiệu O lớn" được sử dụng, ví dụ: tìm kiếm nhị phân là trong thời gian O (log n), có nghĩa là thời gian để tìm kiếm một phần tử là nhật ký (trong cơ số 2, ngầm) của số phần tử. Bằng trực giác, vì mỗi bước loại bỏ một nửa dữ liệu còn lại là không liên quan, tăng gấp đôi số lượng các phần tử sẽ làm tăng thời gian thêm 1 bước. (Tỷ lệ tìm kiếm nhị phân khá tốt.) Hiệu suất của không gian liên quan đến lượng bộ nhớ tăng lên cho các tập dữ liệu lớn hơn. Ngoài ra, lưu ý rằng ký hiệu big-O bỏ qua các yếu tố không đổi - đối với các tập dữ liệu nhỏ hơn, thuật toán O (n^2) vẫn có thể nhanh hơn thuật toán O (n * log n) có hệ số cố định cao hơn. Thuật toán phức tạp thường có nhiều việc phải làm khi khởi động. Bên cạnh thời gian và không gian, các đặc điểm khác bao gồm việc sắp xếp cấu trúc dữ liệu (cây và skiplists, bảng băm), kiên trì (cây nhị phân có thể sử dụng lại con trỏ từ phiên bản cũ hơn, trong khi bảng băm được sửa đổi tại chỗ) Trong khi bạn sẽ cần phải tìm hiểu hành vi của một số cấu trúc dữ liệu để có thể so sánh chúng, một cách để phát triển ý nghĩa về lý do tại sao chúng khác nhau về hiệu suất là nghiên cứu kỹ lưỡng một vài cách. Tôi muốn đề nghị so sánh các danh sách được liên kết đơn lẻ, cây tìm kiếm nhị phân và skip lists, tất cả đều tương đối đơn giản, nhưng có các đặc điểm rất khác nhau. Hãy suy nghĩ về số lượng công việc cần thiết để tìm giá trị, thêm giá trị mới, tìm tất cả các giá trị theo thứ tự, v.v.

Có nhiều văn bản khác nhau về hiệu suất cấu trúc dữ liệu/cấu trúc dữ liệu mà mọi người đề xuất cảm giác với tôi là học OCaml. Xử lý các cấu trúc dữ liệu phức tạp là phù hợp với ML, và hành vi của chúng rõ ràng hơn nhiều khi bạn có thể tránh các con trỏ và quản lý bộ nhớ như trong C. (Học OCaml chỉ để hiểu cấu trúc dữ liệu gần như chắc chắn là con đường dài xung quanh. :))

6

Theo cấu trúc dữ liệu hiểu biết của tôi là bất kỳ dữ liệu nào nằm trong bộ nhớ của bất kỳ hệ thống điện tử nào có thể được quản lý hiệu quả.Nhiều lần nó là một trò chơi của bộ nhớ hoặc khả năng tiếp cận dữ liệu nhanh hơn. Về mặt bộ nhớ một lần nữa, có sự cân bằng được thực hiện với việc quản lý dữ liệu dựa trên chi phí cho công ty của sản phẩm cuối cùng đó. Quản lý hiệu quả cho chúng tôi biết cách tốt nhất dữ liệu có thể được truy cập dựa trên yêu cầu chính của sản phẩm cuối cùng. Đây là một lời giải thích mức độ rất cao nhưng cấu trúc dữ liệu là một chủ đề rộng lớn. Hầu hết những người phỏng vấn đi sâu vào các cấu trúc dữ liệu mà họ có thể thảo luận trong các cuộc phỏng vấn tùy thuộc vào thời gian họ có, đó là danh sách liên kết và các chủ đề liên quan.

Bây giờ, các kiểu dữ liệu này có thể được chia thành nguyên thủy, trừu tượng, tổng hợp, dựa trên cách chúng được xây dựng và truy cập một cách hợp lý.

  • nguyên thủy cấu trúc dữ liệu là các khối xây dựng cơ bản cho tất cả các cấu trúc dữ liệu, họ có một bộ nhớ liên tục cho họ: boolean, char, int, float, double, chuỗi.
  • cấu trúc dữ liệu tổng hợp là cấu trúc dữ liệu bao gồm nhiều loại dữ liệu nguyên thủy. Lớp, cấu trúc, công đoàn, mảng/bản ghi.
  • kiểu dữ liệu trừu tượng là các kiểu dữ liệu tổng hợp có cách để truy cập chúng một cách hiệu quả được gọi là thuật toán. Tùy thuộc vào cách dữ liệu được truy cập cấu trúc dữ liệu được chia thành các kiểu dữ liệu tuyến tính và phi tuyến tính. Các danh sách, ngăn xếp, hàng đợi được liên kết, vv là các kiểu dữ liệu tuyến tính. heaps, cây nhị phân và bảng băm, vv là các kiểu dữ liệu phi tuyến tính.

Tôi hy vọng điều này sẽ giúp bạn bổ nhào vào.

4

Cuốn sách tuyệt vời "Algorithm Design Manual" bởi Skienna chứa một kho lưu trữ khổng lồ của thuật toán và dữ liệu cấu trúc.

Đối với tấn của các vấn đề, cấu trúc dữ liệu và thuật toán được mô tả

Cuốn sách là tuyệt vời khi có nó trên bàn làm việc của bạn nếu bạn tìm kiếm cấu trúc dữ liệu tốt nhất cho vấn đề của bạn để giải quyết. Là cũng rất hữu ích cho việc chuẩn bị phỏng vấn.

Tài nguyên tuyệt vời khác là NIST Dictionary of Data structures and algorithms.

72

Tìm thấy danh sách trong một câu hỏi tương tự, trước đây trên StackOverflow:

Hash Table - được sử dụng để tra cứu nhanh dữ liệu - bảng biểu tượng cho trình biên dịch, cơ sở dữ liệu lập chỉ mục, lưu trữ, biểu diễn dữ liệu độc đáo.

Trie - từ điển, chẳng hạn như một từ được tìm thấy trên điện thoại di động để tự động hoàn thành và kiểm tra chính tả .

Cây hậu tố - tìm kiếm văn bản đầy đủ nhanh được sử dụng trong hầu hết các trình xử lý văn bản.

Ngăn xếp - hoàn tác \ làm lại thao tác trong bộ xử lý văn bản, đánh giá biểu thức và phân tích cú pháp, nhiều máy ảo như JVM được định hướng ngăn xếp.

Hàng đợi - Nghiên cứu vận hành và vận hành nơi các thực thể khác nhau được lưu trữ và giữ để xử lý sau đó, tức là hàng đợi thực hiện chức năng của bộ đệm.

hàng đợi ưu tiên - quá trình lập kế hoạch trong kernel

Trees - phân tích cú pháp, hệ thống tập tin

cây Radix - IP routing table

BSP cây - đồ họa máy tính 3D

Đồ thị - Connections/quan hệ trong các trang web mạng xã hội, Định tuyến , mạng lưới giao tiếp, tổ chức dữ liệu, v.v.

Heap - cấp phát bộ nhớ động trong lisp

Đây là câu trả lời ban đầu được đăng bởi RV Pradeep

Một số liên kết khác, ít hữu ích:

Applications are only listed for some data structures

Not application focused, by good summary and relevant

+1

liên kết đầu tiên của bạn bị hỏng –

+0

Cảm ơn bạn, @DanBeaulieu. Tôi đã xóa liên kết đã chết. – MXMLLN

+1

Tóm tắt rất hay. Có lẽ danh sách các tập quán không bao giờ kết thúc, nhưng người ta nhận được điểm. –

10

Tôi đang ở cùng một chiếc thuyền như bạn. Tôi cần phải nghiên cứu cho các cuộc phỏng vấn công nghệ, nhưng ghi nhớ một danh sách không thực sự hữu ích. Nếu bạn có 3-4 giờ rảnh rỗi, và muốn làm một lặn sâu hơn, tôi khuyên bạn nên kiểm tra ra

mycodeschool
Tôi đã nhìn vào Coursera và các nguồn lực khác như blog và sách giáo khoa, nhưng tôi tìm thấy chúng trong hai không đủ toàn diện hoặc ở đầu kia của quang phổ, quá dày đặc với các thuật ngữ khoa học máy tính tiên quyết.

Anh chàng trong video có một loạt bài giảng về cấu trúc dữ liệu. Đừng bận tâm đến những bức vẽ ngớ ngẩn, hoặc giọng nhẹ nhàng chút nào.Bạn cần phải hiểu không chỉ có cấu trúc dữ liệu để lựa chọn, nhưng một số điểm khác cần xem xét khi người ta nghĩ về cấu trúc dữ liệu:

  • ưu và nhược điểm của các cấu trúc dữ liệu chung
  • tại sao mỗi cấu trúc dữ liệu tồn tại
  • làm thế nào nó thực sự làm việc trong bộ nhớ
  • câu hỏi cụ thể/bài tập và quyết định cấu trúc để sử dụng cho hiệu quả tối đa
  • sáng suốt Big 0 giải thích

I also posted notes on github if you are interested.

0

vài ứng dụng thực tế hơn về cấu trúc dữ liệu

Red-Black Trees (Được sử dụng khi có thường xuyên chèn/xóa và số tìm kiếm) - Clustering K-mean sử dụng cây đỏ đen, cơ sở dữ liệu, Simple- cơ sở dữ liệu đầu óc, tìm kiếm từ bên trong từ điển, tìm kiếm trên web

AVL Trees (tìm kiếm hơn và ít chèn/xóa) - Phân tích dữ liệu và Khai thác dữ liệu và các ứng dụng trong đó bao gồm nhiều tìm kiếm

Min Anh ap - Clustering Algorithms

0

Tôi hy vọng trang web này sẽ là một nơi tuyệt vời để tìm hiểu cách sử dụng thực tế của cấu trúc dữ liệu và thuật toán.

Algorithum problem with solution

0

Đưa ra dưới đây là danh sách các trang web nơi bạn có thể hiểu được sử dụng thực sự của cấu trúc dữ liệu và thuật toán Hacker Earth

Hacker Rank

code chef

Các vấn đề liên quan