Kompleksitas operasi dasar pencarian dan pengurutan algoritma [ditutup]

8

Wiki memiliki lembar contekan yang bagus, tetapi tidak melibatkan no. dari perbandingan atau swap. (meskipun tidak. swap biasanya menentukan kompleksitasnya). Jadi saya membuat yang berikut ini. Apakah info berikut ini benar? Harap beri tahu saya jika ada kesalahan, saya akan memperbaikinya.

Jenis Penyisipan:

  • Kasus Rata-Rata / Kasus Terburuk: ; terjadi ketika input sudah diurutkan dalam urutan menurunΘ(n2)
  • Kasus Terbaik: ; ketika input sudah diurutkanΘ(n)
  • Jumlah perbandingan: dalam kasus terburuk & dalam kasus terbaikΘ(n2)Θ(n)
  • Jumlah swap: dalam kasus terburuk / rata-rata & dalam kasus TerbaikΘ(n2)0

Sortir Pilihan:

  • Kasus Rata-Rata / Kasus Terburuk / Kasus Terbaik:Θ(n2)
  • Jumlah perbandingan:Θ(n2)
  • Jumlah swap: dalam kasus terburuk / rata-rata & dalam kondisi terbaik Paling banyak algoritmanya membutuhkan N swap, setelah Anda menukar elemen ke tempatnya, Anda tidak pernah menyentuhnya lagi.Θ(n)0

Gabungkan Sortir:

  • Kasus Rata-Rata / Kasus Terburuk / Kasus terbaik: ; tidak masalah sama sekali apakah input diurutkan atau tidakΘ(nlgn)
  • Jumlah perbandingan: dalam kasus terburuk & dalam kasus terbaik; dengan asumsi kita menggabungkan dua array ukuran n & m di manaΘ(n+m)Θ(n)n<m
  • Jumlah swap: Tidak ada swap! [tetapi membutuhkan memori ekstra, bukan jenis di tempat]

Sortir Cepat:

  • Kasus Terburuk: ; input yang terjadi sudah diurutkanΘ(n2)
  • Kasus Terbaik: ; ketika pivot membagi array tepat setengahΘ(nlogn)
  • Jumlah perbandingan: dalam kasus terburuk & dalam kasus terbaikΘ(n2)Θ(nlogn)
  • Jumlah swap: dalam kasus terburuk & dalam kasus terbaikΘ(n2)0

Semacam gelembung:

  • Kasus Terburuk:Θ(n2)
  • Kasus Terbaik: ; pada sudah diurutkanΘ(n)
  • Jumlah perbandingan: dalam kasus terburuk & terbaikΘ(n2)
  • Jumlah swap: dalam kasus terburuk & dalam kasus terbaikΘ(n2)0

Pencarian Linier:

  • Kasus Terburuk: ; kunci pencarian tidak ada atau elemen terakhirΘ(n)
  • Kasus Terbaik: ; elemen pertamaΘ(1)
  • Jumlah perbandingan: dalam kasus terburuk & dalam kasus terbaikΘ(n)1

Pencarian Biner:

  • Kasus terburuk / Kasus rata-rata:Θ(logn)
  • Kasus Terbaik: ; ketika kunci adalah elemen tengahΘ(1)
  • Jumlah perbandingan: dalam kasus terburuk / rata-rata & dalam kasus terbaikΘ(logn)1

  1. Saya hanya mempertimbangkan algoritme pencarian & penyortiran dasar.
  2. Diasumsikan di atas bahwa algoritma pengurutan menghasilkan output dalam urutan menaik
  3. Sumber: CLRS yang mengagumkan dan Wiki ini
avi
sumber
Untuk mendiskusikan kelebihan pertanyaan (semacam) ini, silakan bergabung dengan kami dalam obrolan .
Raphael
1
Ini bukan pertanyaan, jadi di luar topik.
David Richerby
Saya memilih untuk menutup juga. Ini mungkin sulit untuk diselamatkan juga karena "pertanyaan" agak luas (apa dasar pencarian dan pengurutan algoritma, tepatnya?)
Juho

Jawaban:

-2

Untuk algoritma umum perbandingan kasus terburuk semacam gelembung adalah Tetapi untuk algoritme kasus khusus di mana Anda menambahkan tanda untuk menunjukkan bahwa telah terjadi pertukaran pada pass sebelumnya. Jika tidak ada swap maka kita keluar dari loop karena array sudah diurutkan. Dalam hal ini perbandingannya adalah bukan 0.Θ(n2)n

Untuk Quick sort Anda telah menyebutkan bahwa swap kasus terburuk adalah . Skenario kasus terburuk untuk penyortiran cepat adalah ketika semua elemen dalam urutan diurutkan sehingga tidak akan ada swap sehingga harus nol.n2

Nikhil Mahajan
sumber
1
Saya tidak mengerti jawaban Anda. Mendeteksi "tanpa swap" dalam semacam gelembung tentu membuatnya lebih cepat tetapi, jika inputnya berada dalam urutan yang berlawanan dengan output, Anda masih memerlukan swap , bahkan dengan deteksi "tanpa swap". Quicksort biasanya berjalan dalam waktu sehingga case terbaik tidak dapat swap . Θ(n2)O(nlogn)n2
David Richerby
Terima kasih telah Mengedit komentar saya, saya baru mengenal SE. Yah aku seharusnya lebih jelas tentang ini. Saya baru saja mengedit komentar saya di atas. Saya mencoba untuk mengatakan bahwa perbandingan kasus terbaik tidak boleh 0 dalam hal Bubble sort harus n. ketika array diurutkan dan Anda menggunakan flag untuk menunjukkan swap pada pass sebelumnya. jika tidak ada swap pada pass sebelumnya maka array sudah disortir jadi tidak perlu berjalan lebih jauh untuk pass pertama kita membuat perbandingan n. Untuk Quick sort saya berbicara tentang Perbandingan dan swap bukan kompleksitas waktu, dalam kasus yang lebih buruk semua elemen diurutkan sehingga tidak perlu swap diperlukan.
Nikhil Mahajan
Dalam kasus normal, quicksort berjalan dalam waktu . Oleh karena itu, kasus terbaik adalah juga langkah waktu (mungkin lebih cepat tetapi hanya memberikan batas atas). Pada langkah , Anda tidak dapat melakukan apa pun kali - perbandingan, swap, atau apa pun. Anda tidak dapat menggunakan lebih dari memori. Kasus terbaik untuk semua ukuran kompleksitas sama sekali tidak boleh lebih dari . O(nlogn)O(nlogn)O()O(nlogn)n2O(nlogn)O(nlogn)
David Richerby
Anda benar saya mengedit jawaban saya untuk Sortir cepat.
Nikhil Mahajan