Isihan. 6.1 Pengenalan 1. Isihan merupakan satu proses untuk menyusun sekumpulan atau senarai data secara menaik atau menurun.

dokumen-dokumen yang mirip
UNIT ISIHAN DAN CARIAN. Pengenalan Jenis-jenis Isihan Jenis-jenis Carian

SENARAI & SENARAI BERPAUT

PEPERIKSAAN AKHIR SEMESTER (SESI OKTOBER 2013)

TINDANAN & BARIS GILIR

Struktur data & algoritma menggunakan C++ Sinopsis:

UNIVERSITI SAINS MALAYSIA. Peperiksaan Semester Pertama Sidang Akademik 2004/2005. Oktober Masa: 3jam

Sistem e-transit Modul Pergerakan

BAB 3 METODOLOGI KAJIAN. langkah-langkah yang akan dilaksanakan dalam proses pengumpulan data

8. TATASUSUNAN. Sebelum ini utk menyimpan 4 nilai perintang, 4 pembolehubah perlu diisytiharkan, contoh:

M A N U A L PENGGUNA SISTEM PENGURUSAN KONTRAK 3K (SPK3K) KONTRAK KEBERSIHAN KONTRAK KESELAMATAN KONTRAK BEKALAN MAKANAN ASRAMA

BAB 3 : METODOLOGI KAJIAN. kajian ini secara terperinci. Ini kerana metodologi merupakan satu aspek yang penting

MENINGKATKAN KEMAHIRAN MURID MENCONGAK FAKTA ASAS DARAB MELALUI PENDEKATAN PERMAINAN DOMINO. Oleh: Aida Ibrahim

Pensyarah : En. Muhammad Hisyamudin bin Hj. Baharudin Jabatan Teknologi Komputer & Rangkaian

PANDUAN PENGGUNA. Modul 1

MANUAL PENGGUNA SISTEM KERJA KURSUS (SKK) UPSR [SETIAUSAHA PEPERIKSAAN] UNIT APLIKASI PEPERIKSAAN, KEMENTERIAN PELAJARAN MALAYSIA

Kawalan PENGENALAN HASIL PEMBELAJARAN

PELUPUSAN SYER DALA M SYARIKAT HARTA TANAH MULAI 1 J ANUARI

PANDUAN PENGGUNAAN PERMOHONAN BANTUAN DERMASISWA PELAJARAN PUSAT PENGAJIAN TINGGI / PONDOK MAJLIS UGAMA ISLAM DAN ADAT RESAM MELAYU PAHANG

TEKNOLOGI AUDIO DIGITAL PRINSIP ASAS AUDIO DIGITAL

UNDANG-UNDANG DAN PERATURAN BOLA SEPAK PIALA MASUM 2014

STATISTIK ASAS. Nordin Tahir Jabatan Ilmu Pendidikan IPG Kampus Ipoh

BENTUK DAN JENIS PENGUJIAN DALAM PENGAJARAN

PENGAJARAN Sistem Nombor Perduaan Mengenal pasti nombor perduaan dan nombor perpuluhan

PANDUAN DAN PERATURAN-PERATURAN PENTAULIAHAN DIPLOMA KEMAHIRAN MALAYSIA 2006 PANDUAN DOKUMENTASI BUKU LOG DAN LAPORAN LATIHAN INDUSTRI

Tajuk 2 : KLASIFIKASI AKAUN: ASET, LIABILITI, EKUITI PEMILIK, HASIL, BELANJA & AKAUN KONTRA

Modul MS Access 1: Pengenalan. 1.0 Mengenal pasti kegunaan perisian pangkalan data dalam menghasilkan bank data dan bank maklumat dalam pendidikan.

Tindakan pengguna. Storan data. Pengumpulan data

Isi Kandungan. Muka Hadapan

MANUAL PENGGUNA SISTEM KERJA KURSUS (SKK) PMR [SETIAUSAHA PEPERIKSAAN] UNIT APLIKASI PEPERIKSAAN, KEMENTERIAN PELAJARAN MALAYSIA

Sistem ehousemanship

. Sila pastikan bahawa kertas peperiksaan ini mengandungi LIMA muka surat yang bercetak sebelum anda memulakan peperiksaan ini. . Jawab SEMUA soalan.

OH, ITUNYA DARAB! Oleh. Chai Mei Ling ABSTRAK

Perakaunan (948) Pencapaian calon bagi mata pelajaran ini mengikut gred adalah seperti yang berikut:

KEMAHIRAN BELAJAR. Mendengar dengan berkesan. Mencatat Nota. Menulis Laporan Cepat. Mengingat

GARIS PANDUAN PELAKSANAAN LITERASI KOMPUTER SEKOLAH MENENGAH

LEMBARAN MAKLUMAT PRODUK

UNIVERSITI SAINS MALAYSIA. CST102 Pengantar Sistem Pengendalian & Komunikasi Data

PENGUKUHAN TANAH - KAEDAH TAYLOR, KAEDAH CASAGRANDE SERTA PENGIRAAN ENAPAN TANAH

BAB LIMA KESIMPULAN, CADANGAN DAN PENUTUP. penyelidik dalam bab yang pertama. Di samping itu juga penyelidik akan

PANDUAN PENGGUNAAN APLIKASI

LEMBAGA HASIL DALAM NEGERI MALAYSIA MANUAL PENGGUNA. APLIKASI e-data PCB

PEKELILING BENDAHARI BIL 3/2009

INSTRUMEN HADIS. Gerak Kerja - Dua Hadis pilihan pelajar. Pilihan Hadis 31-34

PEKELILING KETUA PENGARAH UKUR DAN PEMETAAN BIL. 2 TAHUN 2002 GARIS PANDUAN PEMERIKSAAN DI LAPANGAN BAGI KERJA-KERJA JURUUKUR TANAH BERLESEN

PANDUAN PEMOHONAN PENERBITAN BUKU

ZULKIFLI ALANG MAHAT. 1 P a g e

MODUL 6: HUTANG KAWAN ATAU LAWAN? Isi Kandungan. 6.0 Pengenalan. 6.1 Definisi dan tujuan pinjaman. 6.2 Sumber-sumber dan jenis-jenis pinjaman

PELUPUSAN SYER DALA M SYARIKAT HARTA TANAH MULAI 1 J ANUARI

3. Isu / Cabaran : Kesukaran Menulis dan Mengetahui Nilai Nombor

BAB 1 PENDAHULUAN. 1.1 Pengenalan

PENYEDIAAN CADANGAN TEKNIKAL DAN KEWANGAN

MANUAL e-gerak JABATAN PELAJARAN NEGERI SEMBILAN (JPNNS)

PEKELILING BENDAHARI BIL : 5/2008 PEKELILING PEJABAT BENDAHARI

Cek Tak Laku AKAUN ANDA DAN PERKHIDMATAN. Cek Tak Laku. Program pendidikan pengguna oleh:

PANDUAN PENGGUNA SISTEM MYFIT INSTITUT SUKAN NEGARA PANDUAN PENGGUNA SISTEM MYFIT INSTITUT SUKAN NEGARA

Terma-terma dan Syarat-syarat 0% Easy Pay CIMB

RANCANGAN PENDIDIKAN INDIVIDU SECARA DALAM TALIAN

Muka surat isi kandungan Muka surat ini menyenaraikan isi kandungan tajuk-tajuk utama mengikut muka surat dalam sesebuah Rancangan Perniagaan.

Manual Kerja Kursus Pengajian Perniagaan Kertas 4 (946/4)

BORANG PERMOHONAN PENGISYTIHARAN AMANAH

SEPAKTAKRAW BERPASUKAN. Undang-Undang dan Peraturan Pertandingan adalah tertakluk kepada:

GARIS PANDUAN AMALAN PROFESIONAL LATIHAN PERGURUAN PRAPERKHIDMATAN

LEMBARAN PENDEDAHAN PRODUK

UNIVERSITI SAINS MALAYSIA. CMT211 Sistem Multimedia

RMR1M Online. Sistem Pendaftaran Rumah Mesra Rakyat 1 Malaysia. Versi 1.0. Manual Pengguna

KEMENTERIAN SUMBER MANUSIA (KSM) JABATAN TENAGA KERJA (JTK) & PEJABAT TENAGA KERJA (PTK)

SOALAN LAZIM BERKENAAN BIL BARU TM. (M1R2 Drop 2)

PISMP (PEMBELAJARAN JARAK JAUH) TUGASAN PROJEK

PEK.KETUA PENGARAH UKUR DAN PEMETAAN BIL.8 TAHUN 1982 Peraturan-Peraturan Bilik Rekod Di Jabatan Ukur Negeri

Modul Pembelajaran Kendiri Huraian Teknik Menjawab Tajuk Kelab dan Persatuan. Soalan Percubaan SPM 2011 Negeri Johor (Hakcipta soalan JPN Johor).

BAB 1 PENGENALAN. 1.1 Pengenalan Projek

BAB LIMA PERBINCANGAN, KESIMPULAN DAN CADANGAN. bertujuan untuk meningkatkan lagi penguasaan bahasa Arab khususnya dalam

Pihak Penerbit UniMAP sentiasa mengalu-alukan cadangan manuskrip buku dan berbesar hati untuk menilai cadangan-cadangan penerbitan yang dihantar.

KERAJAAN MALAYSIA. Surat Pekeliling Am Bil. 11 of 1981 SISTEM PENGGUNAAN KAD PERAKAM WAKTU (PUNCH CARD) DI PEJABAT-PEJABAT KERAJAAN

BAB 1 PENDAHULUAN. 1.1 Pengenalan

Fasal 2: Pilihan Raya Umum MASAF

SOALAN LAZIM BAGI KAD PIN & BAYAR (Pindaan 17 Ogos 2017)

Modul PAJSK (Guru Kelas)

PERANAN GURU BIASA DALAM MEMBANTU PERKHIDMATAN BIMBINGAN DAN KAUNSELING DI SEKOLAH

PANDUAN PENGGUNA UNIT PEMODENAN TADBIRAN DAN PERANCANGAN PENGURUSAN MALAYSIA (MAMPU) JABATAN PERDANA MENTERI

Diterbitkan oleh: AKPK_HB_BM_FA.indb 1 2/25/11 11:47:07 AM

HASIL BELANJA HASIL BELANJA. 1.0 Memahami Penyata Pendapatan

Versi SISTEM PENGURUSAN SURAT (SPS) - Surat Keluar - Buku Alamat - Cetakan - Nilai Setem dan Serahan. Panduan Pengguna

KRM3023 ASAS UKURAN GROUP : UPSI08 PENSYARAH : PROF. DR. MARZITA BT PUTEH DR. MOHD FAIZAL NIZAM LEE BT ABDULLAH TAJUK TUGASAN :

Tarikh akhir pengemukaan Borang CKHT 1A : 60 hari selepas tarikh pelupusan harta tanah.

JPA.SARAAN 223/5/4-3 Jld.3 (22) No. Siri : KERAJAAN MALAYSIA PEKELILING PERKHIDMATAN BILANGAN 11 TAHUN 2017

Pengaruh Gaya Hidup Pelajar Kejuruteraan di Kolej Kediaman UTM Terhadap Pencapaian Akademik

SKIM PERSARAAN SWASTA PRIVATE RETIREMENT SCHEMES (PRS)

TAKLIMAT SISTEM PENILAIAN PRESTASI UNIVERSITI SAINS MALAYSIA 2004

MANUAL OPERASI KERJA E-DAFTAR TAHUN 1 APLIKASI PANGKALAN DATA MURID KEMENTERIAN PELAJARAN MALAYSIA

Makluman. Kandungan manual ini mungkin akan berubah, dari masa ke semasa agar selaras. dengan polisi kehadiran KPTM. Tarikh manual: 30 Jun 2016

JAL 331/3 Kejuruteraan Pengangkutan dan Lalulintas

TERMA-TERMA DAN SYARAT-SYARAT SAHABAT AGRO REWARD CAMPAIGN BANK PERTANIAN MALAYSIA BERHAD ( AGROBANK ) ( U)

Tarikh akhir pengemukaan Borang CKHT 1A : 60 hari selepas tarikh pelupusan harta tanah.

Definisi Satu pelan penyertaan yang dirancang bertujuan untuk memilih pemenang di samping menghayati semangat kesukanan

GARIS PANDUAN PEMBANGUNAN DAN PENYENGGARAAN APLIKASI/LAMAN WEB UNIVERSITI SAINS MALAYSIA

MENINGKATKAN KEMAHIRAN MEMBUNDAR DENGAN KAEDAH JABAL (BUKIT)

PERISIAN PCB PINDAAN TERKINI 2008!

PENDAHULUAN MATLAMAT LATIHAN INDUSTRI

BORANG PERMOHONAN HIBAH AMANAH

Transkripsi:

Struktur Data & Algoritma (C++) Isihan.0 Objektif!"Memperkenalkan isihan dalam struktur data.!"menggunakan algoritma isihan mudah iaitu isihan buih, isihan selitan dan isihan pilihan.!"menggunakan algoritma isihan pecah dan takluk yang terdiri daripada isihan cantum dan isihan cepat.!"membincangkan setiap keberkesanan algorimaalgorima isihan.. Pengenalan. Isihan merupakan satu proses untuk menyusun sekumpulan atau senarai data secara menaik atau menurun.. Senarai data yang terisih penting untuk:!"memudahkan proses pemahaman dan proses analisa koleksi data-data yang disimpan.!"diperlukan untuk operasi carian bagi mempercepatkan proses carian. Contoh penggunaan rekod atau data yang terisih ialah direktori telefon. Pada direktori telefon, nombor telefon disenaraikan secara menaik mengikut abjad nama pelanggan.

Isihan. Terdapat banyak algoritma isihan yang telah diperkenalkan, kategori algoritma isihan berdasarkan lokasi pemprosesan data-data isihan, iaitu:!"isihan dalaman - memproses data menggunakan ruang ingatan utama RAM. **bab ini!"isihan luaran - menggunakan ruang ingatan pada storan sekunder seperti di cakera keras atau cakera liut.. Untuk melaksanakan proses isihan komponen yg mesti ada:!"senarai rekod Lebih dari satu unsur @ rekod.!"kekunci rekod - satu medan pengenal kepada rekod dan rekod-rekod akan disusun mengikut kekunci tersebut.. Dua aktiviti utama dalam proses isihan: I) perbandingan unsur-unsur untuk menentukan kedudukan unsur II) peralihan kedudukan unsur-unsur untuk menyusun unsur-unsur tersebut. Bilangan perbandingan unsur dan bilangan peralihan unsur dalam sesuatu algoritma isihan menentukan keberkesanan algoritma tersebut. Keberkesanan kedua-dua aktiviti ini juga bergantung kepada bilangan unsur yang perlu ditukar kedudukan dalam proses isihan.

Struktur Data & Algoritma (C++). Isihan Buih. Isihan buih mudah difahami tetapi hanya sesuai untuk melakukan isihan bagi bilangan data yang kecil kerana masa yang diambil untuk melaksanakan proses isihan adalah lama.. Proses algoritma isihan buih: #"Perbandingan diantara unsur-unsur tatasusunan yang bersebelahan akan dilakukan dari bawah ke atas tatasusunan. #"Penukaran kedudukan akan dibuat apabila unsur berada dalam susunan yang tidak terisih. #"Bagi isihan secara menaik, unsur-unsur yang bernilai besar akan naik ke bahagian atas tatasusunan. #"Pada laluan pertama, nilai paling besar dalam senarai akan dipindah ke tempat paling atas tatasusunan, laluan kedua pula akan menempatkan nilai kedua besar di bahagian kedua atas tatasusunan dan proses ini akan berterusan sehingga nilai laluan menyamai nilai saiz senarai.

Isihan. Perlaksanaan algoritma isihan buih dalam atur cara C++ untuk isihan menaik: Void isihan::buih(jenis_item_senarai data[]) { int laluan; int sementara, x; for(laluan=;laluan<saiz_senarai;laluan++ ){ //pindah nilai besar ke atas tatasusunan for(x=0; x < saiz_senarai - laluan; x++){ if (data[x] > data[x+]){ //Op. penukaran unsur bersebelahan sementara = data[x]; data[x] = data[x+]; data[x+] = sementara; #"Gelung for bahagian luar digunakan untuk mengawal ulangan laluan yang perlu dilaksanakan #"Gelung for di bahagian dalam pula digunakan untuk menukar unsur-unsur bersebelahan supaya unsur yang terbesar boleh dibawa ke atas dalam setiap laluan. #"Pilihan if dalam gelung, digunakan untuk membandingkan unsur-unsur tatasusunan yang bersebelahan.. Perubahan yang berlaku dalam perlaksanaan algoritma isihan buih menaik dengan menggunakan tatasusunan [ ] dan saiz senarai adalah :

Struktur Data & Algoritma (C++) laluan = x = 0 [] [] [] [] [0] laluan = x = 0 [] [] [] [] [0] laluan = x = 0 [] [] [] [] [0] x = [] [] [] [] [0] laluan = 0.. Analisa Isihan Buih. Dalam mana-mana kes susunan data (kes terbaik, sederhana dan terburuk) bilangan perbandingan isihan

Isihan buih adalah sama. Hanya bilangan unsur yang perlu diisih sahaja yang membezakan bilangan perbandingan ini. Secara amnya, bilangan perbandingan dalam isihan buih dapat dinyatakan seperti berikut: (n-)+(n-)+.++= n(n-)/ = O(n ) Contohnya, tatasusunan [ ], terdapat unsur perlu diisih dan jumlah perbandingan yang perlu dibuat dalam isihan ini ialah (-) + (-) + (-) + (- ) = + + + = 0. Untuk membuat isihan menaik tasasusunan [ ] atau [ ] atau [ ] memerlukan 0 bilangan perbandingan yang sama.. Keberkesanan algoritma buih di atas boleh ditingkatkan, dengan tidak meneruskan laluan bagi unsur-unsur yang sudah terisih. Ini boleh dilakukan dengan menambah syarat yang perlu diperiksa di gelung luar algoritma tersebut: void isihan::buih(jenis_item_senarai data[]){ int laluan = ; int sementara, x; char tukar = 'Y'; while((laluan<saiz_senarai)&&(tukar=='y')){ //pindah nilai besar ke atas tatasusunan tukar = 'T'; for(x=0;x< saiz_senarai - laluan; x++) { if (data[x] > data[x+]){ //Op. penukaran unsur bersebelahan sementara = data[x]; data[x] = data[x+]; data[x+] = sementara; tukar = 'Y'; laluan++;

Struktur Data & Algoritma (C++). Isihan Selitan. Teknik isihan selitan biasanya digunakan oleh pemain kad untuk menyusun kad yang ada di tangan. Semasa menyusun kad, satu kad akan ditarik dan kemudian akan diselitkan pada kedudukan yang sesuai supaya ia membentuk satu turutan seperti mana yang dikehendaki.. Aktiviti utama dalam isihan selitan ialah untuk menyediakan ruangan yang sesuai bagi suatu nilai (dalam senarai) dan menyelit nilai ke dalam senarai unsur yang sedia ada supaya ianya mengikut susunan.. Perlaksanaan algoritma isihan selitan dalam atur cara C++ untuk isihan menaik: void isihan::selitan(jenis_senarai data[]){ jenis_senarai item; int laluan, titik_selitan; for(laluan=;laluan<saiz_senarai;laluan++){ item = data[laluan]; titik_selitan = laluan; while((titik_selitan>0)&& (data[titik_selitan-]>item)){ //menyediakan ruangan untuk selitan data[titik_selitan]=data[titik_selitan-]; titik_selitan--; data[titik_selitan] = item; //menyelitkan data pada tempat yg betul

Isihan #"Gelung for digunakan untuk menentukan nilai yang akan dicari tempat selitannya, nilai ini akan diumpukkan kepada pembolehubah item. #"Gelung while pula, digunakan untuk mencari dan menyediakan ruangan selitan bagi nilai item untuk ditempatkan. #"Setelah ruangan disediakan, nilai item akan diselit.. Perubahan yang berlaku dalam perlaksanaan algoritma isihan selitan dengan menggunakan tatasusunan [ ] dan saiz senarai adalah : laluan = titik_selitan = [] [] [] [] [0] item = laluan = titik_selitan = item = [] [] [] [] [0]

Struktur Data & Algoritma (C++) laluan = titik_selitan = [] [] [] [] [0] item = laluan = titik_selitan = [] [] [] [] [0] item =.. Analisa Isihan Selitan. Pada laluan pertama, ulangan maksima gelung bahagian dalam adalah sekali, pada laluan kedua ulangan maksima gelung bahagian dalam adalah kali dan setetusnya.. Ulangan pada gelung dalam juga bergantung kepada susunan unsur, contohnya pada laluan, ulangan maksima pada gelung dalam adalah sekali, tetapi data[0]<item (<) maka kenyataan pada dalam gelung tidak dilaksanakan (ulangan 0 kali).. Kes terbaik dengan isihan selitan ialah data yang diberi tersusun dalam susunan yang dikehendaki, 9

Isihan.:setiap laluan hanya satu perbandingan sahaja akan dilakukan, oleh itu bilangan perbandingan kes ini adalah n- yang memberi kadar linear O(n).. Kes buruk algoritma isihan selitan bila data dalam susunan songsang..:setiap laluan ulangan maksima akan dilaksanakan, contohnya laluan perbandingan akan dilakukan dari data[-], data[-], data[-] dan data[-]. Secara amnya, bilangan perbandingan dalam isihan selitan dapat dinyatakan seperti berikut: n i= n( n ) i = ( n ) + ( n ) +... + + = = O( n ). Isihan Pilihan. Dalam teknik ini, nilai yang terbesar dalam senarai perlu dikenalpasti dan mengumpukkan nilai tersebut pada unsur senarai yang terakhir, jika hendak menyediakan satu senarai terisih secara menaik. Seterusnya, nilai kedua besar pula dikenalpasti dan nilai tersebut diumpukkan pada unsur ke dua akhir. Proses ini akan berulang, sehingga mendapat satu senarai yang terisih.. Perlaksanaan algoritma isihan pilihan dalam atur cara C++ bagi isihan menaik. 0

Struktur Data & Algoritma (C++) void isihan::pilihan(jenis_senarai data[]){ int p; int indeks_terbesar, akhir, sementara; for (akhir=saiz_senarai-;akhir>0;akhir--) //ulang dari akhir tts hingga [0] { indeks_terbesar = 0; for (p = ; p <= akhir; p++) //mencari data terbesar dlm laluan dari bawah tts if(data[p]>data[indeks_terbesar]) indeks_terbesar = p; //operasi penukaran data terbesar ke belakang sementara = data[akhir]; data[akhir] = data[indeks_terbesar]; data[indeks_terbesar] = sementara; #"Gelung bahagian luar menetapkan tempat dari atas (akhir) tatasusunan untuk menempatkan nilai terbesar bagi setiap laluan. #"Gelung bahagian dalam pula untuk mencari nilai yang terbesar bagi setiap laluan bermula daripada bahagian bawah tatasusunan.. Perubahan yang berlaku dalam perlaksanaan algoritma tersebut dengan menggunakan tatasusunan [ ] dan saiz senarai adalah :

Isihan akhir = [] [] [] [] [0] indeks_terbesar = 0.. Analisa Isihan Pilihan. Bilang perbandingan dilakukan dalam algoritma ini adalah sama seperti algoritma isihan buih dalam mana-mana kes susunan data (kes terbaik, sederhana dan terburuk) bilangan perbandingannya juga sama.. Jika saiz senarai adalah n, maka gelung bahagian luar akan mula dari n- hingga. Pada setiap laluan atau setiap nilai akhir, perbandingan pada bahagian gelung dalam perlu dilakukan sebanyak akhir kali dimana akhir = n-, oleh itu jumlah bilangan perbandingan gelung bahagian dalam adalah (n-) + (n-) +.. +. Secara amnya, bilangan perbandingan dalam isihan pilihan dapat dinyatakan seperti berikut: n( n ) ( n ) + ( n ) +... + + = = O( n ). Bahagian operasi penukaran data sentiasa akan dilakukan walaupun indeks_terbesar berada pada tempat akhir.. Ketidak berkesanan ini boleh diatasi dengan meletakkan syarat sebelum operasi penukaran

Struktur Data & Algoritma (C++) tersebut dilakukan, seperti berikut: if (indeks_terbesar!= akhir) { sementara = data[akhir]; data[akhir] = data[indeks_terbesar]; data[indeks_terbesar] = sementara;. Isihan Cantum. Algoritma isihan cantum menggunakan pendekatan pecah dan takluk. Isihan cantum mempunyai tiga langkah utama, iaitu:!"pecah - Memecahkan masalah kepada beberapa sub-masalah.!"takluk - Sub-masalah yang kecil akan diselesaikan (ditakluki).!"gabung - Menggabungkan penyelesaian submasalah untuk menyelesaikan masalah yang asal.. Algoritma ini akan melaksanakan operasi-operasinya secara rekursif.. Operasi isihan cantum secara terperinci: a. Operasi pemecahan - memecahkan senarai unsur yang hendak diisih kepada dua bahagian, bahagian segmen kiri bermula dari awal hingga tengah senarai dan bahagian segmen kanan iaitu bahagian seterusnya di belakang senarai. Operasi pemecahan akan dilakukan pula kepada bahagian segmen kiri senarai dan berterusan sehingga mendapat segmen yang hanya

Isihan mengandungi satu unsur di bahagian paling kiri senarai. b. Operasi takluk dan gabung - Segmen yang mempunyai satu unsur akan diisih dan dicantumkan dengan satu segmen di sebelah kanannya. Jika segmen sebelah kanannya belum dipecahkan lagi, operasi pemecahan akan dilakukan dahulu sebelum isihan dan cantuman dibuat. Operasi pecahan, isihan dan percantuman akan berterusan sehingga kesemua segmen yang telah dipecahkan digabungkan semula untuk membentuk satu senarai yang telah diisih.. Perlaksanaan algoritma isihan cantum dalam atur cara C++ bagi isihan menaik. void Isihan::Cantum(int T[], int awal, int akhir) { int tengah; if (awal<akhir) { tengah = (awal+akhir)/; Cantum(T, awal, tengah); Cantum(T, tengah+, akhir); Gabung(T, awal,tengah, akhir );

Struktur Data & Algoritma (C++) void Isihan::Gabung(int T[], int awal, int tengah, int akhir) { int iawal, itfana, itengah, k; int Tfana[SAIZ]; iawal=awal; itfana=awal; itengah=tengah+; while((iawal<=tengah) && (itengah<=akhir)) { //salin data-data dari ke- tts ke dalam Tfana if (T[iawal]<=T[itengah]){ Tfana[iTfana]= T[iawal]; ++iawal; else{ Tfana[iTfana]= T[itengah]; ++itengah; ++itfana; if (iawal>tengah) { //salin yang selebih selepas tengah-akhir ke dlm Tfana for (k=itengah; k<= akhir; k++) { Tfana[iTfana] = T[k]; ++itfana; else{ //salin yang selebih selepas awaltengah ke dlm Tfana for (k=iawal; k<= tengah; k++){ Tfana[iTfana] = T[k]; ++itfana; //salin tts fana Tfana ke tts sebenar T for (k=awal; k<= akhir; k++) { T[k]=Tfana[k];

Isihan #"Fungsi Cantum adalah fungsi rekusif yang bertujuan untuk memecahkan unsur-unsur kepada kumpulan-kumpulan kecil sehingga satu kumpulan terdiri daripada satu unsur. #"Proses pemecahan tersebut dilakukan dengan membahagikan satu kumpulan kepada dua bahagian dengan membuat pemotongan di tengah tatasusunan. #"Pembahagian ini akan berterusan sehingga satu kumpulan terdiri daripada satu unsur sahaja, selepas itu proses penggabungan akan berlaku dengan fungsi Gabung. #"Fungsi ini akan menggabungkan dua kumpulan demi dua kumpulan dan dalam masa yang sama akan mengisihkan unsur-unsur dalam kumpulankumpulan tersebut.. Proses-proses yang berlaku dalam isihan cantum dari langkah hingga langkah ke untuk mengisih tatasusunan T[ 0 ] yang saiz senarai adalah 9.

Struktur Data & Algoritma (C++). IsihCantum(T,0,) [0] [] [] [] [] [] [] [] [] 0. IsihCantum(T,0,) [0] [] [] [] []. IsihCantum(T,,) [] [] [] [] 0. IsihCantum(T,0,) 0. IsihCantum(T,,) [0] [] [] [] []. IsihCantum(T,,) [] [] 0. IsihCantum(T,,) [] [] 0. IsihCantum(T,0,) [0] []. IsihCantum(T,,) []. IsihCantum(T,,) []. IsihCantum(T,,) []. IsihCantum(T,,) []. IsihCantum(T,,) []. IsihCantum(T,,) [] 0. IsihCantum(T,,) []. IsihCantum(T,0,0) [0]. IsihCantum(T,,) []. Gabung(T,0,0,) [0] [] 9. Gabung(T,0,,). Gabung(T,,,) 9. Gabung(T,,,). Gabung(T,,,) [0] [] [] [] [] [] [] [] [] 0. Gabung(T,0,,) [0] [] [] [] []. Gabung(T,,,) [] [] [] [] 0. Gabung(T,0,,) [0] [] [] [] [] [] [] [] [] 0

Isihan.. Analisa Isihan Cantum. Dalam isihan cantum, senarai unsur sentiasa dibahagikan kepada dua segmen yang seimbang saiznya (hampir seimbang bagi saiz senarai ganjil), bilangan pengulangan pada proses pembahagian segmen-segmen ini adalah: n n n n n n + + + + +... x x Dengan anggapan segmen kiri dan kanan akan memberi saiz yang sama (hampir sama) maka nilai x lg n, oleh itu bilangan pengulangan di atas boleh dihampirkan kepada nilai n lg n.. Bilangan pengulangan yang sama diperlukan untuk penyelesaian dan gabungan penyelesaian, oleh itu jumlah bilangan langkah-langkah dalam algoritma cantum ialah n lgn. n lgn boleh dihampirkan kepada O(n lgn). lg n lg n -. Satu keburukan yang ketara pada algoritma isihan cantum ialah ruang ingatan dalam proses gabungan segmen-segmen. Tfana[] perlu diisytiharkan n

Struktur Data & Algoritma (C++) berkali-kali bergantung dengan bilangan rekursif, ini memerlukan banyak ruangan ingatan terutama bagi senarai data yang besar. Masalah ini boleh diselesaikan jika senarai berpaut digunakan untuk menukarkan tatasusunan.. Isihan Cepat. Hampir sama dengan kaedah isihan cantum yang berdasarkan kaedah pecah dan takluk. Perbezaan: i. Pemecahan adalah berdasarkan nilai (dalam bab ini mengambil unsur yang pertama dari senarai sebagai nilai ), berbanding dengan pemecahan di tengah tatasusunan bagi isihan cantum. ii. Tiada operasi gabung yang diperlukan untuk mengisih unsur-unsur pada segmen kiri dan kanan.. Proses isihan cepat: I) Semua unsur yang lebih kecil dari unsur pertama akan dijadikan unsur pada segmen kiri dan semua unsur yang lebih besar dari nilai akan dijadikan segmen kanan. II) Segmen kiri pula akan menentukan nilai nya dan membahagikan unsur-unsurnya kepada segmen kiri dan kanan berdasarkan nilai tersebut. Proses ini akan berterusan sehingga segmen paling kiri hanya terdiri daripada satu unsur. III) Dengan proses pembahagian ini segmen sebelah kiri telah diisihkan dan proses yang sama akan diteruskan pada segmen sebelah kanan pula. 9

Isihan IV) Proses pemecahan dan pembahagian nilai-nilai unsur mengikut nilai ini membolehkan semua unsur yang berada pada segmen kiri dan kanan akan diisih secara berasingan untuk mendapat dua senarai unsur yang telah terisih.. Perlaksanaan algoritma isihan cantum dalam atur cara C++ bagi isihan menaik. void Isihan::Cepat (jenis_item T[], int awal, int akhir) { int potong; if (awal<akhir){ potong = PmBahagi(T, awal, akhir); isihcepat(t, awal, potong); isihcepat(t, potong+, akhir); #"Dua fungsi diperlukan dalam algoritma isihan cepat: Fungsi Cepat & fungsi Pmbahagi. #"Fungsi Cepat - fungsi rekusif yang bertujuan untuk memecahkan unsur-unsur kepada kumpulankumpulan kecil sehingga satu kumpulan terdiri daripada satu unsur. #"Fungsi Pmbahagi - membahagikan satu kumpulan kepada dua bahagian dengan membuat pemotongan bahagian yang kurang daripada di sebelah kiri dan bahagian yang lebih besar dari di sebelah kanan. 0

Struktur Data & Algoritma (C++) int Isihan::PmBahagi(int T[], int awal, int akhir) { jenis_item, temp; int ulang, bahagi, drbawah, dratas; =T[awal]; drbawah=awal; dratas= akhir; ulang=; //sentiasa benar while (ulang) { while (T[dratas]>){ //cari nilai yg kecil drpd dr atas tts dratas--; while(t[drbawah]<){ //cari nilai yg besar drpd dr bawah tts drbawah++; if (drbawah<dratas) { // tukar tempat temp=t[drbawah]; T[drbawah]=T[dratas]; T[dratas]=temp; else { ulang=0; bahagi = dratas; return bahagi;. Contoh proses pembahagian utk kumpulan tatasusunan [ 0 ], setelah proses pembahagian ini selesai, ditempatkan pada indeks yang ke & akan dipulangkan ke fungsi Cepat untuk pembahagian kumpulan seterusnya. Perubahan-perubahan yang berlaku dalam perlaksanaan algoritma tersebut dengan menggunakan tatasusunan T[ 0 ].

Isihan potong = dratas = [] [] 0 0 0 0 0 0 [] [] [] [] [] [] [0] drbawah = 0 [0] [] [] [] [] [] [] [] [] 0. isihcepat(t,0,). PmBahagi(T,0,) = [0] [] [] [] [] [] [] [] [] 0. IsihCepat(T,0,) [0] [] [] [] []. IsihCepat(T,,) [] [] [] [] 0. PmBahagi(T,0,) = [0] [] [] [] []. PmBahagi(T,,) = [] [] [] [] 0. IsihCepat(T,0,) [0] [] [] [] []. IsihCepat(T,,). IsihCepat(T,,) 9. IsihCepat(T,,) [] [] [] [] 0. PmBahagi(T,0,) = [0] [] []. PmBahagi(T,,) = [] [] 0. PmBahagi(T,,) = [] [] [] 0. IsihCepat(T,0,) [0] []. PmBahagi(T,0,) = 0 [0] []. IsihCepat(T,,) []. IsihCepat(T,,) []. IsihCepat(T,,) []. IsihCepat(T,,) []. IsihCepat(T,,) [] [] 0. PmBahagi(T,,) = [] [] 0 9. IsihCepat(T,0,0) 0. IsihCepat(T,,) [0] []. IsihCepat(T,,) [] 0. IsihCepat(T,,) []

Struktur Data & Algoritma (C++).. Analisa Isihan Cepat. Keberkesanan algoritma isihan cepat bergantung kepada pemilihan nilai. Algoritma isihan cepat dibincangkan di atas menjadikan unsur pertama senarai sebagai nilai, cara lain untuk menentukan nilai ialah unsur terakhir senarai, secara random atau secara terancang.. Kes terburuk dalam isihan cepat ialah bila unsur terkecil atau terbesar dalam senarai sentiasa dipilih menjadi menyebabkan segmen sebelah kiri dan kanan tidak seimbang. Contoh kes terburuk dalam isihan cepat untuk kumpulan tatasusunan [ ]. [0] [] [] [] [0] [] [] [] [] [] [] [] []. Kes terbaik untuk isihan cepat ialah bila senarai sentiasa dibahagikan kepada dua segmen yang seimbang saiznya, ini boleh dicapai jika nilai dipilih dengan betul.. Bilangan perbandingan diperlukan dalam proses pembahagian segmen-segmen bagi kes isihan cepat n n n n n terbaik adalah: n + + + + +... x x

Isihan. Kes terbaik ialah segmen kiri dan kanan akan memberi saiz yang sama (hampir sama) maka nilai x lg n.. Contoh untuk kes terbaik isihan cepat untuk tatasusunan [ ]. [0] [] [] [] [0] [] [] [] [0] [] [] []. Bilangan langkah-langkah pembahagian segmensegmen yang seimbang adalah lgn dan bilangan langkah-langkah perbandingan bergantung kepada saiz senarai n. lg n n. Kesimpulan Cara yang terbaik untuk memilih algoritma isihan ialah dengan menguji keberkesanan algoritma-algoritma yang sedia ada dengan sample-sample data yang akan digunakan.