kami tidak dapat mengelompokkan tipe data yang berbeda dalam larik. Seperti, kombinasi integer dan char, char dan float dll Show
Oleh karena itu array disebut sebagai tipe data homogen Contohint arr[5]={10,20,30,40,50}; Indeks LarikDengan menggunakan nilai indeks, kita dapat langsung mengakses elemen yang diinginkan dalam array Indeks array dimulai dari 0, bukan 1 Untuk mengakses elemen pertama, kita bisa langsung menggunakan indeks 0. saya. dan usia[0] Untuk mengakses elemen ke-5, kita bisa langsung menggunakan indeks 4. saya. dan usia[4] Kita dapat memanipulasi elemen ke-N dengan menggunakan indeks N - 1. {Di mana N > 0} Secara umum, array berukuran N akan memiliki elemen dari indeks 0 hingga N-1 Mengakses elemen array menggunakan index/* * Accessing array elements using index */ #include int main() { int arr[5] = {10, 20, 30, 40, 50}; //printing 3rd element which is index 2 printf("3rd element = %d\n", arr[2]); //printing 5th element which is index 4 printf("5th element = %d\n", arr[4]); return 0; }_ Analisis kompleksitas waktuMenggunakan nilai indeks, kita dapat mengakses elemen array dalam waktu yang konstan Jadi kompleksitas waktu adalah O(1) untuk mengakses elemen dalam array Topik yang Mungkin Anda SukaKode daftar yang tidak efisien secara tidak sengaja sangat umum terjadi dan sulit ditemukan, tetapi ketika daftar bertambah, kode Anda terhenti Teks ini melihat secara mendetail kinerja operasi larik dasar dan membahas alternatif dari larik standar. Ini juga mencakup lembar contekan dari operasi daftar mahal di Java dan Python Dasar-dasar susunanArray adalah tipe data koleksi yang paling mendasar. Ini terdiri dari elemen-elemen dari satu jenis yang ditata secara berurutan dalam memori. Anda dapat mengakses elemen apa pun dalam waktu yang konstan dengan pengindeksan bilangan bulat Array tersedia dalam semua bahasa utama. Di Java, Anda dapat menggunakan notasi PertunjukanSecara umum, array memiliki kinerja yang sangat baik. Mengoptimalkan performa array adalah tujuan utama desain hardware memori dan pengelolaan memori OS
Susunan dinamisDalam larik dinamis, elemen disimpan di awal larik tetap yang mendasarinya, dan posisi yang tersisa tidak digunakan
Berikut tampilan memori saat menambahkan elemen 2, 7, 1, 3, 8, 4 ke array dinamis yang awalnya kosong dengan kapasitas 2 Waktu untuk menambahkan elemen adalah linier dalam kasus terburuk, karena melibatkan pengalokasian memori baru dan penyalinan setiap elemen Namun, jika kita memperluas array dengan proporsi konstan, mis. g. dengan menggandakan ukurannya, total waktu untuk menyisipkan n elemen akan menjadi O(n), dan kita katakan bahwa setiap penyisipan memerlukan waktu diamortisasi yang konstan Lihat Kompleksitas waktu diamortisasi untuk informasi lebih lanjut tentang cara menganalisis struktur data yang memiliki operasi mahal yang jarang terjadi Operasi daftar mahalUntuk menambah atau menghapus elemen pada indeks tertentu bisa mahal, karena semua elemen setelah indeks harus digeser. Kompleksitas waktu terburuk adalah linier Demikian pula, mencari elemen untuk suatu elemen bisa jadi mahal, karena Anda mungkin perlu memindai seluruh larik Dalam contoh kode Python ini, panggilan
Untuk menghindari jenis masalah kinerja ini, Anda perlu mengetahui perbedaan antara operasi daftar waktu konstan dan linier Metode Java ArrayList yang mahalMetode ArrayList berikut beroperasi pada subkumpulan elemen, tetapi masih memiliki kerumitan waktu yang bergantung pada ukuran add(int i, E element) n - i remove(int i) n - i [] 0n - i [] 2n [] 4n [] 6n [] 8n Catatan. Operasi daftar Python mahalOperasi daftar Python berikut beroperasi pada subset elemen, tetapi masih memiliki kerumitan waktu yang bergantung pada ArrayList 2n - i ArrayList 4n - i ArrayList 6n - i ArrayList 8n - i pop(0) 0n pop(0) 2n Catatan. AlternatifTidak ada struktur data lain yang dapat bersaing dengan efisiensi pengindeksan array dan iterasi array. Namun, Anda mungkin perlu mengambil pendekatan berbeda jika operasi lain sangat penting untuk performa Peta dan kamusTabel hash, sering kali dalam bentuk peta atau kamus, adalah alternatif yang paling umum digunakan untuk array. Ini mengimplementasikan kumpulan pasangan kunci-nilai yang tidak diurutkan, di mana setiap kunci unik
Di Jawa, tabel hash adalah bagian dari perpustakaan standar (HashSet dan HashMap). Banyak bahasa modern, seperti Python dan Go, memiliki kamus dan peta bawaan yang diimplementasikan oleh tabel hash Array yang diurutkanJika pencarian penting untuk kinerja, Anda mungkin ingin menggunakan larik yang diurutkan
Kelas Java Array berisi implementasi pencarian biner, Python menawarkan algoritma membagi dua yang serupa, dan Go juga memiliki beberapa metode pencarian biner Daftar tertautJika Anda perlu menambahkan atau menghapus elemen berulang kali di awal atau akhir daftar, Anda mungkin ingin mempertimbangkan daftar tertaut
Kelas Java LinkedList mengimplementasikan daftar tertaut ganda, Python menawarkan , dan Go juga memiliki paket daftar Pohon pencarian binerPohon pencarian biner yang seimbang menyimpan item dalam urutan terurut dan menawarkan pencarian, penambahan, dan penghapusan item yang efisien
Di Java, pohon pencarian adalah bagian dari perpustakaan standar (TreeSet dan TreeMap), sedangkan Python dan Go tidak mendukungnya secara langsung. Apakah Python mencantumkan waktu yang konstan?Daftar Python adalah array panjang variabel, yang menyimpan referensi daripada objek itu sendiri. Jadi, mengindeks elemen membutuhkan waktu yang konstan .
Berapa kerumitan waktu mengakses daftar dengan Python?Kerumitan waktu rata-rata operator in untuk daftar adalah O(n) . Ini menjadi lebih lambat ketika ada banyak elemen. Waktu eksekusi sangat bervariasi tergantung pada posisi nilai yang dicari. Dibutuhkan waktu paling lama ketika nilainya berada di akhir atau tidak ada.
Apakah daftar Python mengindeks waktu yang konstan?Pengindeksan & Penetapan
. Tidak peduli seberapa besar daftarnya, pencarian dan penetapan indeks membutuhkan waktu yang konstan dan karenanya O ( 1 ) O(1) O(1 .
Apakah daftar dalam Python statis atau dinamis?Daftar bukanlah objek berukuran tetap, sehingga disebut struktur data dinamis . |