Hai! Sebagai pemasok switch, saya sering ditanya tentang aspek teknis switch, dan satu pertanyaan yang sering muncul adalah, "Berapa kompleksitas waktu eksekusi pernyataan switch di C?" Jadi, mari kita selami dan menguraikannya dengan cara yang mudah dimengerti.
Pertama, mari kita bicara tentang apa itu pernyataan switch di C. Pernyataan switch adalah pernyataan aliran kontrol yang memungkinkan variabel diuji kesetaraannya terhadap daftar nilai. Setiap nilai disebut case, dan pernyataan switch mengeksekusi pernyataan yang terkait dengan case pertama yang cocok dengan nilai variabel. Berikut ini contoh sederhananya:
#termasuk <stdio.h> int main() { int angka = 2; switch (angka) { kasus 1: printf("Angkanya adalah 1.\n"); merusak; kasus 2: printf("Bilangannya adalah 2.\n"); merusak; kasus 3: printf("Bilangannya adalah 3.\n"); merusak; default: printf("Angkanya bukan 1, 2, atau 3.\n"); } kembalikan 0; }
Sekarang, mari kita ke pertanyaan utama: berapa kompleksitas waktu eksekusi pernyataan switch ini? Itu tergantung pada bagaimana kompiler mengimplementasikannya. Secara umum ada dua cara umum: serangkaian pernyataan if - else atau tabel lompat.
Rangkaian Pernyataan if - else
Dalam beberapa kasus, kompiler mungkin menerjemahkan pernyataan switch menjadi serangkaian pernyataan if - else. Misalnya, pernyataan switch di atas dapat ditulis ulang menjadi:
#termasuk <stdio.h> int main() { int angka = 2; if (angka == 1) { printf("Bilangannya adalah 1.\n"); } else if (bilangan == 2) { printf("Bilangannya adalah 2.\n"); } else if (bilangan == 3) { printf("Bilangannya adalah 3.\n"); } else { printf("Bilangannya bukan 1, 2, atau 3.\n"); } kembalikan 0; }
Jika kompiler menggunakan pendekatan ini, kompleksitas waktunya adalah O(n), dimana n adalah jumlah kasus dalam pernyataan switch. Hal ini karena dalam skenario terburuk, program harus memeriksa setiap kasus satu per satu hingga menemukan kecocokan. Misalnya, jika nilai variabel tidak cocok dengan kasus apa pun dan harus melalui semua pemeriksaan if - else, maka diperlukan n perbandingan.
Meja Lompat
Namun, kompiler modern biasanya lebih pintar. Jika kasus dalam pernyataan switch adalah bilangan bulat berurutan dengan rentang kecil, kompiler dapat menggunakan tabel lompat. Tabel lompat adalah larik alamat memori. Nilai variabel yang diaktifkan digunakan sebagai indeks ke dalam array ini, dan program melompat langsung ke alamat memori yang sesuai.
Misalnya, jika kita memiliki pernyataan switch dengan kasus dari 0 hingga 9, kompiler dapat membuat tabel lompat berukuran 10. Ketika program menemukan pernyataan switch, ia mengambil nilai variabel, menggunakannya sebagai indeks untuk mengakses tabel lompat, dan kemudian melompat ke blok kode yang sesuai.
Kompleksitas waktu dari pernyataan switch yang diimplementasikan dengan tabel lompat adalah O(1). Hal ini karena berapa pun jumlah kasusnya, program hanya perlu melakukan satu operasi (mengindeks ke dalam tabel lompat) untuk menemukan blok kode yang tepat untuk dieksekusi.
Jadi, secara ringkas, kompleksitas waktu eksekusi pernyataan switch di C dapat berupa O(n) jika diimplementasikan sebagai serangkaian pernyataan if - else atau O(1) jika diimplementasikan dengan tabel lompat.
Sekarang, mari kita bicara tentang saklar yang kami sediakan. Kami menawarkan berbagai macam saklar berkualitas tinggi untuk berbagai aplikasi. Untuk penggunaan otomotif, kami memilikiSakelar Daya Umum Otomotif. Sakelar ini dirancang untuk menangani kebutuhan daya sistem otomotif, memastikan pengoperasian yang andal.
Jika Anda mencari sesuatu yang lebih spesifik untuk aplikasi otomotif, kamiSakelar Otomatis dua pedaladalah pilihan yang bagus. Ini dirancang untuk memberikan kontrol yang presisi di lingkungan otomotif.
Dan untuk aplikasi yang memerlukan pengoperasian sesaat, kamiSakelar Toggle Sesaatadalah cara untuk pergi. Itu dibuat agar tahan lama dan menawarkan pengalaman peralihan yang mulus.
Baik Anda seorang pengembang yang mengerjakan program C yang menggunakan pernyataan saklar atau insinyur otomotif yang membutuhkan saklar yang tepat, kami siap membantu Anda. Sakelar kami dirancang dengan mempertimbangkan kinerja dan keandalan, dan kami berkomitmen untuk menyediakan produk dan layanan terbaik kepada pelanggan kami.
Jika Anda tertarik dengan sakelar kami atau memiliki pertanyaan tentang spesifikasi teknisnya, jangan ragu untuk menghubungi kami. Kami di sini untuk membantu Anda membuat pilihan yang tepat untuk proyek Anda. Baik untuk proyek hobi skala kecil atau aplikasi industri skala besar, kami dapat bekerja sama dengan Anda untuk menemukan solusi saklar yang sempurna.


Referensi
- KN King, "Pemrograman C: Pendekatan Modern, Edisi Kedua"
- BW Kernighan dan DM Ritchie, "Bahasa Pemrograman C"