Peringkat dari berbagai struktur data setidaknya akan sebagian terkait dengan konteks masalah. Ini akan membantu untuk mempelajari bagaimana menganalisis kinerja ruang dan waktu dari algoritma. Biasanya, "notasi O besar" digunakan, misalnya pencarian biner dalam waktu O (log n), yang berarti waktu untuk mencari elemen adalah log (dalam basis 2, secara implisit) dari jumlah elemen. Secara intuitif, karena setiap langkah membuang setengah dari data yang tersisa sebagai tidak relevan, menggandakan jumlah elemen akan meningkatkan waktu sebanyak 1 langkah. (Pencarian biner berskala cukup baik.) Kinerja ruang berkaitan dengan bagaimana jumlah memori tumbuh untuk kumpulan data yang lebih besar. Juga, perhatikan bahwa notasi O besar mengabaikan faktor konstan - untuk kumpulan data yang lebih kecil, algoritme O (n ^ 2) mungkin masih lebih cepat daripada algoritme O (n * log n) yang memiliki faktor konstanta lebih tinggi.
Selain waktu dan ruang, karakteristik lain termasuk apakah struktur data diurutkan (pohon dan skiplist diurutkan, tabel hash tidak), persistensi (pohon biner dapat menggunakan kembali pointer dari versi lama, sementara tabel hash dimodifikasi pada tempatnya), dll.
Meskipun Anda perlu mempelajari perilaku beberapa struktur data untuk dapat membandingkannya, satu cara untuk mengembangkan pemahaman mengapa mereka berbeda dalam kinerja adalah dengan mempelajari beberapa. Saya menyarankan untuk membandingkan daftar tertaut tunggal, hierarki pencarian biner, dan daftar lewati , yang semuanya relatif sederhana, tetapi memiliki karakteristik yang sangat berbeda. Pikirkan tentang berapa banyak pekerjaan yang diperlukan untuk menemukan nilai, menambahkan nilai baru, menemukan semua nilai secara berurutan, dll.
Ada berbagai teks tentang menganalisis algoritme / performa struktur data yang direkomendasikan orang, tetapi yang benar-benar membuatnya masuk akal bagi saya adalah mempelajari OCaml. Berurusan dengan struktur data yang kompleks adalah keunggulan ML, dan perilakunya jauh lebih jelas ketika Anda dapat menghindari pointer dan manajemen memori seperti di C. (Mempelajari OCaml hanya untuk memahami struktur data hampir pasti sudah lama). :))