Minggu, 05 April 2015
       
       SORTING bisa didefinisikan sebagai suatu proses pengurutan data yang sebelumnya disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu. Sorting yang kita terapkan menggunakan tipe data array agar pemahaman serta pengimplementasiannya lebih mudah.

Pada umumnya terdapat dua jenis pengurutan :
- Ascending (Naik).
- Descending (Turun).

Contoh :

Data                             : Array [1..6] of Byte = (22, 10, 15, 3, 8, 2);
Data Acak                    : 22 10 15 3 8 2
Terurut Ascending       : 2 3 8 10 15 22
Terurut Descending     : 22 15 10 8 3 2

Untuk melakukan proses pengurutan tersebut dapat digunakan berbagai macam cara/metode.

Beberapa metode yang sudah umum digunakan diantaranya adalah :


1. Pengurutan berdasarkan penyisipan dan penjagaan terurut (insert and keep sorted method)
Insertion sort
         Teknik sorting ini dibuat dengan cara menyisipkan atau memasukkan satu-persatu, bila kita akan mengurutkan data, kemudian ingin menyisipkan suatu data maka data tersebut akan otomatis masuk dimana dia berada. Pengurutan dilakukan dengan cara membandingkan data ke – i dengan data berikutnya, (dimana i dimulai dari data di index ke 1 sampai dengan data terakhir). Jika ditemukan data yang lebih kecil maka data tersebut disisipkan ke depan sesuai dengan posisi yang seharusnya, dan saat ada elemen yang disispkan, maka elemen-elemen lainnya akan bergeser kebelakang.

Contoh procedure insertion sort ascending :

Procedure asc_insert;
Var
i, j, temp : byte;
begin
     for i := 2 to max do
          begin
               temp := data [i] ;
                    j :=i-1;
                    while (data [j] > temp ) and (j>0) do
          begin
               data [j+1] := data [j];
               dec (j) ;
          end;
     data [j+1] := temp ;
   end;
end;

Tree sort
         Metode sorting dengan cara membangun pohon biner dengan menampilkan 3 hasil output: PreOrder, InOrder, dan PostOrder. Konsep dasar dari tree sort adalah sebagaimana sebuah pohon, ada akar, batang, ranting, daun, dan sebagainya. Dalam tree sort ada istilah akar atau root dan daun atau leaf.


ketentuan dari gambar diatas adalah :

1 menjadi akar ,
2 menjadi subtree kiri,
3 menjadi subtree kanan,
4 & 5 menjadi daun dari subtree kiri ,
6 menjadi daun dari subtree kanan.

Setiap objek dalam pohon biner berisi dua pointer, biasanya disebut kiri dan kanan. Selain pointer ini tentu saja node dapat berisi tipe data lainnya. Misalnya, pohon biner integer bisa terdiri dari objek dari jenis berikut:

            struct Node {
               int item; / / Data dalam node ini.
               Node *kiri; / / Pointer ke subtree kiri.
               Node * kanan; / / ​​Pointer ke subtree kanan.

            }



2. Pengurutan berdasarkan perbandingan (compirasion-based sorting)
Bubble sort
          Teknik ini dilakukan dengan pola membawa nilai terbesar menjadi nilai index terakhir array. Jadi sistem ini melakukan pengecekan nilai 1 dengan 2, lalu 2 dengan 3 sampai dengan data terakhir, bila nilai index yang lebih kecil lebih besar maka akan dilakukan pertukaran. Proses ini dilakukan hingga jumlah data. Membandingkan elemen yang sekarang dengan elemen yang berikutnya, jika elemen sekarang>elemen berikutnya, maka tukar.

Contoh procedure tukar data:

Procedure asc_buble (var data :array; jmldata:integer);
Var
i,j : integer;
begin
     for i := 2 to jmldata do
          for j :=jmldata downto i do
               if data [j] <  data [j-1] then
               tukardata (data[j], data [j-1] ) ;
end;
Exchange sort
          Teknik sorting ini dibuat dengan cara pola membawa nilai terbesar menjadi nilai index terakhir array. Jadi sistem ini melakukan pengecekan nilai 1 dengan 2, lalu 2 dengan 3 sampai dengan data terakhir, bila nilai index yang lebih kecil lebih besar maka akan dilakukan pertukaran. Proses ini dilakukan hingga jumlah data dikurangi 1 atau sampai program tidak melakukan pertukaran. Jadi waktu untuk melakukan proses sorting lebih cepat. Exchange sort itu sangat mirip dengan buble sort. Bahkan banyak yang mengatakan bahwa exchange sort sama dengan buble sort.

Contoh procedure exchange sort :

Procedure asc_buble (var data :array; jmldata:integer);
Var
i,j : integer;
begin
     for i := 2 to jmldata do
          for j :=jmldata downto i do
          if data [j] <  data [j-1] then
               tukardata (data[j], data [j-1] ) ;
end;

perbedaannya terdapat dalam hal bagaimana membandingkan antar elemen-elemennya:



3. Pengurutan berdasarkan prioritas (priority queue sorting method)
Selection sort
          Teknik sorting ini dibuat dengan cara melakukan pengecekan satu-persatu, bila kita akan mengurutkan secara ascending maka kita lakukan pengecekan nilai tempat yang pertama (index pertama pada array) kita bandingkan semua nilai yang ada kita cari nilai minimalnya, lalu simpan index/ letak nilai minimum itu ditemukan, setelah pengecekan selesai tukar index awal pengecekan dengan nilai minimum yang telah simpan tadi. Proses ini dilakukan terus-menerus sampai pada pengecekan index terakhir minimal dengan index terakhir, beda dengan streith selection sort adalah dengan teknik ini melakukan pertukaran nilai lebih sedikit, hanya jumlah data-1 pertukaran. Jadi waktu untuk melakukan proses sorting lebih cepat. Membandingkan elemen yang sekarang dengan elemen yang berikutnya sampai dengan elemen yang terakhir. Jika ditemukan elemen yang lebih kecil, maka dicatat posisinya. Namun jika ditemukan elemen terkecil, maka dicatat posisinya dan kemudian di TUKAR dengan elemen sekarang.

Contoh procedure selection sort secara ascending :

Procedure asc_selection;
Var
Min,pos : byte;
Begin
     For i:= 1 to max-1 do
          Begin
               Pos :=i ;
               For j := i+1 to max do
               If data [j] < data [pos] then pos :=j;
                    If i <> pos then tukardata (data[i] , data[pos] );
               End;
End;

Heap sort (menggunakan tree)
          Teknik sorting ini dibuat dengan versi yang jauh lebih efisien selection sort. Ia juga bekerja dengan menentukan elemen (atau terkecil) terbesar daftar, menempatkan bahwa pada akhir (atau awal) dari daftar, kemudian melanjutkan dengan sisa daftar tapi menyelesaikan tugas ini secara efisien dengan menggunakan struktur data yang disebut tumpukan, tipe khusus pohon biner. Setelah daftar data telah dibuat menjadi tumpukan, simpul akar dijamin menjadi unsur (atau terkecil) terbesar. Ketika dipindahkan dan ditempatkan di akhir daftar, tumpukan adalah ulang sehingga elemen terbesar yang tersisa bergerak ke akar. Menggunakan heap, menemukan elemen terbesar berikutnya membutuhkan O (log n) waktu, bukan O (n) untuk linear scan di selection sort sederhana. Hal ini memungkinkan heapsort untuk menjalankan dalam O (n log n) waktu, dan ini juga merupakan kompleksitas kasus terburuk.

          HeapSort adalah algoritma pengurutan data berdasarkan perbandingan, dan termasuk golongan selection sort. Walaupun lebih lambat daripada quick sort pada kebanyakan mesin , tetapi heap sort mempunyai keunggulan yaitu kompleksitas algoritma pada kasus terburuk adalah n log n. Algoritma pengurutan heap sort ini mengurutkan isi suatu larik masukan dengan memandang larik masukan sebagai suatu Complete Binary Tree (CBT). Setelah itu Complete Binary Tree (CBT) ini dapat dikonversi menjadi suatu heap tree. Setelah itu Complete Binary Tree (CBT) diubah menjadi suatu priority queue.

          Algoritma pengurutan heap dimulai dari membangun sebuah heap dari kumpulan data yang ingin diurutkan, dan kemudian menghapus data yang mempunyai nilai tertinggi dan menempatkan dalam akhir dari larik yang telah terurut. Setelah memindahkan data dengan nilai terbesar, proses berikutnya adalah membangun ulang heap dan memindahkan nilai terbesar pada heap tersebut dan menempatkannya dalam tempat terakhir pada larik terurut yang belum diisi data lain.
Proses ini berulang sampai tidak ada lagi data yang tersisa dalam heap dan larik yang terurut penuh. Dalam implementasinya kita membutuhkan dua larik – satu untuk menyimpan heap dan satu lagi untuk menyimpan data yang sudah terurut. Tetapi untuk optimasi memori, kita dapat menggunakan hanya satu larik saja. Yaitu dengan cara menukar isi akar dengan elemen terakhir dalam heap tree. Jika memori tidak menjadi masalah maka dapat tetap menggunakan dua larik yaitu larik masukan dan larik hasil.

Heap Sort memasukkan data masukan ke dalam struktur data heap. Nilai terbesar (dalam max-heap) atau nilai terkecil (dalam min-heap) diambil satu per satu sampai habis, nilai tersebut diambil dalam urutan yang terurut.

Algoritma untuk heap sort :

function heapSort(a, count) is
input: sebuah larik tidak terurut a dengan panjang length
(pertama letakkan a dalam max-heap) heapify(a, count)
end := count -1
while end > 0 do
remove ( )
reheapify ( )


end := end – 1



4. Pengurutan berdasarkan pembagian dan penguasaan (devide and conquer method)
Quick sort
          Teknik sorting ini dibuat dengan cara yang menggunakan partisi. Pada teknik ini, data dibagi menjadi dua bagian, yaitu data disebelah kiri partisi selalu lebih kecil dari data disebelah kanan. Namun data pada kedua patisi belum terurut, sehingga untuk mengurutkannya, proses pengurutan dilakukan pada kedua partisi secara terpisah. Selanjutnya, data di sebelah kiri dan kanan dipartisi lagi. Merupakan proses penyusunan elemen yang membandingkan suatu elemen (pivot) denan elemen yang lain, dan menyusunnya sedemikian rupa sehingga elemen –elemen lain yang lebih kecil dari pivot terletak disebelah kiri pivot. Dan elemen yang lebih besar dari pivot terletak disebelah kanan pivot.Dengan demikian akan terbentuk dua sublist, yang terletak disebelah kanan dan kiri pivot.Lalu pada sublist kiri dan kanan itu kita anggap sebuah list baru, dan kita kerjakan proses yang sama seperti yang sebelumnya.Demikian seterusnya sampai tidak terdapat sublist lagi.

Contoh procedure quick sort secara ascending :

Procedure asc_quick (l , r :integer) ;
Var
i, j : integer;
begin
     if l < r then
     begin
          i := l ;    j := r+1;
          repeat
               repeat inc (i) until data [i] >= data [l] ;
               repeat dec (j) until data [j] <= data [l] ;
          if i<j then tukardata (data [i], data [j]) ;
          until i>j ;
               tukardata (data [l], data [j] );
          asc_quick (l, j-1);
          asc_quick (j+1, r);
     end;
end;

Merge sort
          Teknik sorting ini dibuat dengan cara mengambil keuntungan dari kemudahan penggabungan daftar sudah disortir ke daftar diurutkan baru. Dimulai dengan membandingkan setiap dua elemen (yaitu: 1 dengan 2, kemudian 3 dengan 4) dan swapping mereka jika yang pertama datang setelah kedua. Kemudian masing-masing menggabungkan daftar yang dihasilkan dari dua ke daftar empat, kemudian menggabungkan daftar tersebut empat, dan seterusnya, sampai akhirnya dua daftar digabungkan ke dalam daftar diurutkan akhir.

          Algoritma pengurutan data mergesort dilakukan dengan menggunakan cara divideandconquer yaitu dengan memecah kemudian menyelesaikan setiap bagian kemudian menggabungkannya kembali. Pertama data dipecah menjadi 2 bagian dimana bagian pertama merupakan setengah (jika data genap) atau setengah minus satu (jika data ganjil) dari seluruh data, kemudian dilakukan pemecahan kembali untuk masing-masing blok sampai hanya terdiri dari satu data tiap blok.

          Setelah itu digabungkan kembali dengan membandingkan pada blok yang sama apakah data pertama lebih besar daripada data ke-tengah+1, jika ya maka data ke-tengah+1 dipindah sebagai data pertama, kemudian data ke-pertama sampai ke-tengah digeser menjadi data ke-dua sampai ke-tengah+1, demikian seterusnya sampai menjadi satu blok utuh seperti awalnya. Sehingga metode mergesort merupakan metode yang membutuhkan fungsi rekursi untuk penyelesaiannya.

          Dengan hal ini deskripsi dari algoritma dirumuskan dalam 3 langkah berpola divide-and-conquer. Berikut menjelaskan langkah kerja dari Mergesort.
- Divide          : Memilah elemen – elemen dari rangkaian data menjadi dua bagian.
- Conquer       : Conquer setiap bagian dengan memanggil prosedur mergesortsecararekursif
- Kombinasi   : Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan

          Proses rekursi berhenti jika mencapai elemen dasar. Hal ini terjadi bilamana bagian yang akan diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen tersebut menandakan bahwa bagian tersebut telah terurut sesuai rangkaian.

          Contoh penerapan atas sebuah larik/array sebagai data sumber yang akan diurutkan {3, 9, 4, 1, 5, 2} adalah sebagai berikut:
- Pertama kali larik tersebut dibagi menjadi dua bagian, {3, 9, 4} dan {1, 5, 2}
- Kedua larik kemudian diurutkan secara terpisah sehingga menjadi {3, 4, 9} dan {1, 2, 5}
- Sebuah larik baru dibentuk yang sebagai penggabungan dari kedua larik tersebut {1}, sementara nilai-nilai dalam masing larik {3, 4, 9} dan {2, 5} (nilai 1 dalam elemen larik ke dua telah dipindahkan ke larik baru)
- Langkah berikutnya adalah penggabungan dari masing-masing larik ke dalam larik baru yang dibuat sebelumnya
- {1, 2} ↔{3, 4, 9} dan {5}
- {1, 2, 3} ↔ {4, 9} dan {5}
- {1, 2, 3, 4}↔{9} dan {5}
- {1, 2, 3, 4, 5}↔{9} dan {null}
- {1, 2, 3, 4, 5, 9}↔{null}dan {null}

Contoh program sedehana merge sort :

Public class mergeSort{
Public static void main(String args [ ] ){
int i;
int array [ ] = {7,5,1,3,6,4,9,8};
System.out.println("\n\n Kelompok 3\n\n");
System.out.println(" Pengurutan dengan MergeSort\n\n");
System.out.println("Data Sebelum Diurutkan:\n");
    for(i = 0; i < array.length; i++)
System.out.print( array[i]+"  ");
System.out.println( );
Merge Sort_srt(array,0, array.length - 1);
System.out.print("Data Setelah Diurutkan:\n");
    for(i = 0; i < array.length; i++)
System.out.print(array[i]+"  ");
System.out.println();
    }
Public static void mergeSort_srt(int array[ ],int lo, int n){
 int low = lo;
int high = n;
if (low > = high)
    {return; }
int middle = (low + high) / 2;
mergeSort_srt(array, low, middle);
mergeSort_srt(array, middle + 1, high);
int end_low = middle;
int start_high = middle + 1;
while ((lo <= end_low) && (start_high <= high))
    {
if (array[low] < array[start_high]) {
low++; }
else {
int Temp = array[start_high];
            for (int k = start_high- 1; k > =low; k--)
                {array[k+1] = array[k]; }
array[low] = Temp;
low++;
end_low++;
start_high++;  }
        }


    }



5. Pengurutan berkurang menurun (diminishing increment sort method)
Shell sort (pengembangan insertion)
          Merupakan proses pengurutan data yang sebelumnya acak menjadi data yang terurut dengan cara menentukan jarak antar elemen yang akan dibandingkan. Teknik sorting ini dibuat dengan cara meningkatkan atas bubble sort dan insertion sort dengan menggerakkan keluar dari elemen-elemen memesan lebih dari satu posisi pada suatu waktu. Salah satu implementasi dapat digambarkan sebagai mengatur urutan data dalam array dua dimensi dan kemudian menyortir kolom baru array menggunakan insertion sort.
          Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959. Dalam metode ini jarak antara dua elemen yang dibandingkan dan ditukarkan tertentu. Secara singkat metode ini dijelaskan sebagai berikut. Pada langkah pertama, kita ambil elemen pertama dan kita bandingkan dengan elemen pada jarak tertentu dari elemen pertama tersebut. Kemudian elemen kedua kita bandingkan dengan elemen lain dengan jarak yang sama seperti diatas. Demikian seterusnya sampai seluruh elemen dibandingkan. Pada langkah kedua proses diulang dengan langkah yang lebih kecil, pada langkah ketiga jarak tersebut diperkecil lagi seluruh proses dihentikan jika jarak sudah sama dengan satu.

Berikut ini merupakan Procedure ShellSort pada Pascal :

Procedure Shell(Var Temp : Data; JmlData : Integer);
Var I,J, Jarak : Integer;
Begin
     Jarak := JmlData Div 2;
     While Jarak > 0 Do
          Begin
               For I:=1 To JmlData-Jarak Do
                    Begin
                         J := I + Jarak;
                         If Temp[I] > Temp[J] Then
                              SWAP(Temp[I], Temp[Lok]);
                    End;
               Jarak := Jarak Div 2;
          End;
End;


Nama    : Tri Atmojo Sulaiman
NIM      : A710140024
Prodi     : Pend TIK


Referensi :
http://alva666.blogspot.com/2015/04/metode-sorting.html
http://puguhjayadi.blogspot.com/2013/05/tree-sort-c.html
https://itprogrammingandlinux.wordpress.com/2011/05/22/buble-insertion-selection-shell-maxmin-quick-merge-sort/
http://arraydalamprogram.blogspot.com/2010/03/heap-sort.html
http://populeritas.blogspot.com/2013/01/metode-pengurutan-merge-sort.html

METODE SORTING

Posted by Unknown
Jumat, 27 Februari 2015
       Mungkin agan-agan lagi galau atau malah lagi marah? nah ane mau ngasih sesuatu yang asik nih, yang mungkin bikin hari agan akan lebih menarik,

Ost sama AMV/MAD

        Isi nya terdiri dari AMV /【MAD】 dan Sountrack anime..
yang udah ane Ubek-ubek youtube, sama cari yang terbaik dan ane bungkus sendiri-sendiri, gomen ya ane uploadnya di 2 situs yang berbeda


ya udah ga usah basa-basi lagi nih, sedot aja gan wkwkwk

                              Ost NeroPendragon Vers   |    AMV /【MAD】NeroPendragon

Sangkyou udah mau mau mampir

Rabu, 25 Februari 2015
1. Pengertian Struktur Data

          Struktur Data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien. struktur data berarti tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna (user) atau pun kolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna. Setiap baris dari kumpulan kolom-kolom tersebut dinamakan catatan (record). Lebar kolom untuk data dapat berubah dan bervariasi. Ada kolom yang lebarnya berubah secara dinamis sesuai masukan dari pengguna, dan juga ada kolom yang lebarnya tetap. Dengan sifatnya ini, sebuah struktur data dapat diterapkan untuk pengolahan database (misalnya untuk keperluan data keuangan) atau untuk pengolah kata (word processor) yang kolomnya berubah secara dinamis. dan disetiap struktur data memiliki beberapa Type Data.


2. Type Data


   a. Integer ( Bilangan Bulat )

         Integer merupakan nilai bilangan bulat baik dalam bentuk desimal maupun hexadecimal. Tipe data numerik yang termasuk integer adalah sebagai berikut :
- Byte : Memiliki nilai integer dari -128 sampai +127 dan menempati 1 byte ( 8 bits ) di memori
- Short : Memiliki nilai integer dari -32768 sampai 32767 dan menempati 2 bytes ( 16 bits ) di memori
- Int : Memiliki nilai integer dari -2147483648 sampai 2147483647 dan menempati 4 bytes ( 32 bits ) di memori
-Long : Memiliki nilai dari -9223372036854775808 sampai 9223372036854775807 dan menempati 8 bytes ( 64 bits ) di memori. 

    b. Char

         Char adalah karakter tunggal yang didefinisikan dengan diawali dan diakhiri dengan tanda ‘ ( petik tunggal ).

   c. String
          Merupakan urutan-urutan dari karakter yang terletak di antara tanda petik tunggal. Nilai data string akan menempati memori sebesar banyaknya karakter string ditambah dengan 1 byte. Bila panjang dari suatu string di dalam deklarasi variabel tidak disebutkan, maka dianggap panjangnya adalah 255 karakter.

   d. Real
           Nilai konstanta numeric real berkisar dari 1E-38 sampai 1E+38. E menunjukkan nilai 10 pangkat, dan tipe data ini menempati memori sebesar6 byte.

   e. Boolean
            Tipe data boolean terdiri dari dua nilai saja, yaitu true dan false. Boolean sangat penting dalam mengevaluasi suatu kondisi, dan sering digunakan untuk menentukan alur program.

    f. Subrange 

             Tipe data bilangan yang punya jangkauan nilai tertentu sesuai dengan definisi pada pemrogram. 
Example: 
Type Variabel=Nilai_awal…Nilai_akhir

3. Larik (Array)

Larik (Bahasa Inggris: array), dalam ilmu komputer, adalah suatu tipe data terstruktur yang dapat menyimpan banyak data dengan suatu nama yang sama dan menempati tempat di memori yang berurutan (kontinu) serta bertipe data sama pula.
Larik dapat diakses berdasarkan indeksnya. Indeks larik umumnya dimulai dari 0 dan ada pula yang dimulai dari angka bukan 0. Pengaksesan larik biasanya dibuat dengan menggunakan perulangan (looping).

·  Larik Satu Dimensi
Larik satu dimensi merupakan jenis larik dasar dan jenis larik yang paling sering digunakan, pemakaian larik satu dimensi terutama dipakai dalam tipe data string (terutama dalam bahasa Bahasa pemrograman C).

·  Larik Dua Dimensi
Larik dua dimensi merupakan tipe larik yang lain. Larik dua dimensi sering dipakai untuk merepresentasikan tabel dan matriks dalam pemrograman.

Larik dalam beberapa bahasa pemrograman

· Bahasa Pascal
Larik dalam bahasa Pascal dapat didefinisikan dengan indeks awal dan indeks akhirnya.
Contoh:
program larik;
var arr: array[1..10] of integer;  //larik dengan indeks awal 1 dan indeks akhir 10
begin
arr[1] := 5; //memasukkan nilai ke indeks 1
writeln(arr[i]); //mencetak angka 5
end.

· Bahasa C
Larik dalam bahasa C selalu dimulai dari indeks 0. Larik dapat didefinisikan secara statik atau dinamik. Jika didefinisikan statik, ukuran larik akan tetap dari awal program hingga akhir program. Jika didefinisikan dinamik, ukuran larik dapat berubah selama program berjalan karena memesan tempat pada memori heap. Proses pemesanan tempat pada memori disebut dengan alokasi. Sedangkan proses pembebasan memori yang sudah dipesan disebut dengan dealokasi.
Contoh larik statik:
#include <stdio.h>
int main(){
int arr[10]; //indeks awal 0 dan indeks akhir 9
arr[0] = 5;
printf(“%d\n”, arr[0]);
}

Contoh larik dinamik:
#include <malloc.h>
int main(){
int * arr;
arr = (int *) malloc(10 * sizeof(int)); //memesan 10 tempat pada memori
arr[0] = 5;
free(arr);                              //menghancurkan larik. Memori pada heap dibebaskan
arr = (int *) malloc(5 * sizeof(int));  //memesan 5 tempat baru pada memori
free(arr);                              //di akhir program jangan lupa untuk menghancurkan larik dinamik
}

·  Bahasa Java
Dalam bahasa Java tipe data larik direpresentasikan sebagai sebuah objek khusus. Karena itu pada bahasa Java larik yang dibuat selalu bersifat dinamik. Namun walaupun bersifat dinamik, larik pada bahasa Java tidak perlu dihancurkan karena proes penghancuran dilakukan secara otomatis melalui suatu prosedur yang disebut dengan Pengumpulan sampah (Inggris: Garbage Collecting). Sama seperti bahasa C, indeks larik selalu dimulai dari 0.
Contoh:
public class larik {
public static void main(String args[]) {
int[] arr = new arr[10];
arr[0] = 5;
System.out.println(arr[0]);
}
}
· PHP
Sama seperti di JAVA larik di PHP juga merupakan sebuah object lebih tepatnya lagi map terorder. Ada dua tipe larik di PHP, indexed array (simple array) dan associated array (value array). Di PHP, element larik bisa berupa string, Bilangan, boolean, dan semua tipe data primitif lainnya, termasuk larik juga bisa menjadi element larik lainnya.

Cara medefinisikan larik:
#mendefinisikan array kosong
$larik = array();
Contoh indexed array (simple array):
$jam = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
$hari = array(‘senin’, ‘selasa’, ‘selasa’, ‘rabu’, ‘kamis’, ‘jumat’, ‘sabtu’);
Contoh associated array:
$bulan = array(‘1’=>’January’, ‘2’=>’February’, ‘3’=>’Maret’, ‘4’=>’April’);
$komponenKalender = array(
‘bulan’=> array(1, 2, 3, 4, 5, 6, 7, 8, 9 ,10 , 11, 12),
‘hari’ => array(‘senin’, ‘selasa’, ‘selasa’, ‘rabu’, ‘kamis’, ‘jumat’, ‘sabtu’)
);

4. Stack (Tumpukan)

  Dalam ilmu komputer, stack atau tumpukan merupakan sebuah koleksi objek yang menggunakan prinsip LIFO (Last In First Out), yaitu data yang terakhr kali dimasukkan akan pertama kali keluar dari stack tersebut. Stack dapat diimplementasikan sebagai representasi berkait atau kontigu (dengan tabel fix). Ciri Stack :
* Elemen TOP (puncak) diketahui
* penisipan dan penghapusan elemen selalu dilakukan di TOP
* LIFO

Pemanfaatan Stack :
* Perhitungan ekspresi aritmatika (posfix)
* algoritma backtraking (runut balik)
* algoritma rekursif

Operasi Stack yang biasanya :

a. Push (input E : typeelmt, input/output data : stack): menambahkan sebuah elemen ke stack
b. Pop (input/output data : stack, output E : typeelmt ) : menghapus sebuah elemen stack
c. IsEmpty ()
d. IsFull ()
e. dan beberapas selektor yang lain

5. Pohon (Tree)
Dalam ilmu komputer, sebuah Pohon adalah suatu struktur data yang digunakan secara luas yang menyerupai struktur pohon dengan sejumlah simpul yang terhubung.

· Simpul (node)
Sebuah Simpul dapat mengandung sebuah nilai atau suatu kondisi atau menggambarkan sebuah struktur data terpisah atau sebuah bagian pohon itu sendiri. Setiap simpul dalam sebuah pohon memiliki nol atau lebih simpul anak (child nodes), yang berada dibawahnya dalam pohon (menurut perjanjian, pohon berkembang ke bawah, tidak seperti yang dilakukannya di alam). Sebuah simpul yang memiliki anak dinamakan simpul ayah (parent node) atau simpul leluhur (ancestor node) atau superior. Sebuah simpul paling banyak memiliki satu ayah. Tinggi dari pohon adalah panjang maksimal jalan ke sebuah daun dari simpul tersebut. Tinggi dari akar adalah tinggi dari pohon. Kedalaman dari sebuah simpul adalah panjang jalan ke akarnya dari simpul tersebut.

· Akar (Root nodes)
Simpul yang paling atas dalam pohon adalah akar (root node). Menjadi simpul teratas, simpul akar tidak akan memiliki orang tua. Ini merupakan simpul di mana biasanya merupakan tempat untuk memulai operasi dalam pohon (walaupun beberapa algoritma dimulai dengan daun dan berakhir pada akar). Semua simpul yang lain dapat dicapai dari akar dengan menelusuri pinggiran atau pranala. (Dalam definisi resmi, setiap jalan adalah khas). Dalam diagram, ini secara khusus di gambar paling atas. Di beberapa pohon, seperti heap, akar memiliki sifat khusus. Setiap simpul dalam sebuah pohon dapat dilihat sebagai akar dari sub pohon yang berakar pada simpul tersebut.

· Daun (Leaf nodes)
Semua simpul yang berada pada tingkat terendah dari pohon dinamakan daun (leaf node). Sejak mereka terletak pada tingkat paling bawah, mereka tidak memiliki anak satupun. Seringkali, daun merupakan simpul terjauh dari akar. Dalam teori grafik, sebuah daun adalah sebuah sudut dengan tingkat 1 selain akar (kecuali jika pohonnya hanya memiliki satu sudut; maka akarnya adalah daunnya juga). Setiap pohon memiliki setidaknya satu daun. Dalam pohon berdasarkan genetic programming sebuah daun (juga dibilang terminal) adalah bagian terluar dari sebuah program pohon. Jika dibandingkan dengan fungsinya atau simpul dalam, daun tidak memiliki argumen. Di banyak kasus dalam daun-GP input ke programnya.

· Simpul dalam (Internal nodes)
Sebuah simpul dalam adalah semua simpul dari pohon yang memiliki anak dan bukan merupakan daun. Beberapa pohon hanya menyimpan data didalam simpul dalam, meskipun ini mempengaruhi dinamika penyimpanan data dalam pohon. Sebegai contoh, dengan daun yang kosong, seseorang dapat menyimpan sebuah pohon kosong dengan satu daun. Bagaimanapun juga dengan daun yang dapat menyimpan data, tidak dimungkinkan untuk menyimpan pohon kosong kecuali jika seseorang memberikan beberapa jenis penanda data di daun yang menandakan bahwa daun tersebut seharusnya kosong (dengan demikian pohon itu seharusnya kosong juga). Sebaliknya, beberapa pohon hanya menyimpan data dalam daun, dan menggunakan simpul dalam untuk menampung metadata yang lain, seperti jarak nilai dalam sub pohon yang berakar pada simpul tersebut. Jenis pohon ini berguna untuk jarak yang meragukan.

· Sub pohon (Subtrees)
Sebuah sub pohon adalah suatu bagian dari pohon struktur data yang dapat dilihat sebagai sebuah pohon lain yang berdiri sendiri. Simpul apapun dalam pohon P, bersama dengan seluruh simpul dibawahnya, membentuk sebuah sub pohon dari P. Sub pohon yang terhubung dengan akar merupakan keseluruhan pohon tersebut. Sub pohon yang terhubung dengan simpul lain manapun dinamakan sub pohon asli (proper subtree).

· Penyusunan pohon
Terdapat dua jenis pohon. Sebuah pohon tidak terurut (unordered tree) adalah sebuah pohon dalam arti struktural semata-mata, yang dapat dikatakan memberikan sebuah simpul yang tidak memiliki susunan untuk anak dari simpul tersebut. Sebuah pohon dengan suatu susunan ditentukan, sebagai contoh dengan mengisi bilangan asli berbeda ke setiap anak dari simpul tersebut, dinamakan sebuah pohon terurut (ordered tree), dan struktur data yang dibangun didalamnya dinamakan pohon terurut struktur data (ordered tree data structures). Sejauh ini pohon terurut merupakan bentuk umum dari pohon struktur data. Pohon biner terurut merupakan suatu jenis dari pohon terurut.

· Hutan
Sebuah hutan adalah sebuah himpunan yang terdiri dari pohon terurut. Lintasan inorder, preorder, dan postorder didefinisikan secara rekursif untuk hutan.

- inorder
1. lewati inorder hutan yang dibentuk oleh sub pohon yang pertama dalam hutan, jika ada
2. kunjungi akar dari pohon pertama.
3. lewati inorder hutan yang dibentuk oleh sisa pohon dalam hutan, jika ada.

- preorder
1. kunjungi akar dari pohon pertama.
2. lewati preorder hutan yang dibentuk oleh sub pohon yang pertama dalam hutan, jika ada
3. lewati preorder hutan yang dibentuk oleh sisa pohon dalam hutan, jika ada.

- postorder
1. lewati postorder hutan yang dibentuk oleh sub pohon yang pertama dalam hutan, jika ada
2. lewati postorder hutan yang dibentuk oleh sisa pohon dalam hutan, jika ada.
3. kunjungi akar dari pohon pertama.

·  Penggambaran pohon
Ada banyak cara untuk menggambarkan pohon; pada umumnya penggambaran mewakili simpul sebagai rekor yang dialokasikan pada heap (bedakan dengan heap struktur data) yang mengacu pada anaknya, ayahnya, atau keduanya, atau seperti data materi dalam array, dengan hubungan diantaranya ditentukan oleh posisi mereka dalam array (contoh binary heap).

· Pohon sebagai grafik
Dalam teori grafik, sebuah pohon adalah sebuah grafik asiklis yang terhubung. Pohon yang berakar merupakan sebuah grafik dengan sudut tunggal diluar sebagai akar. Dalam kasus ini, dua sudut apapun yang terhubung dengan sebuah sisi mewarisi hubungan orang tua dan anak. Sebuah grafik asiklis dengan bermacam-macam komponen yang terhubung atau himpunan dari pohon-pohon yang berakar kadang-kadang dipanggil hutan.

· Metode traversal
Melangkah melalui materi dari pohon, dengan arti dari hubungan antara orang tua dan anak, dinamakan menelusuri pohon, dan tindakannya adalah sebuah jalan dari pohon. Seringkali, sebuah operasi mungkin dapat dilakukan sebagai penunjuk ysng mengacu pada simpul khusus. Sebuah penelusuran dimana setiap simpul ayah dikunjungi sebelum anaknya dinamakan pre-order walk, yaitu sebuah penelusuran dimana anaknya dikunjungi sebelum ayahnya masing-masing dinamakan post-order walk.

· Operasi umum
* Menghitung seluruh materi (item)
* Pencarian untuk sebuah materi
* Menambahkan sebuah materi pada sebuah posisi tertentu dalam pohon
* Menghapus sebuah materi
* Mengeluarkan seluruh bagian dari sebuah pohon pruning
* Menambahkan seluruh bagian ke sebuah pohon grafting
* Menemukan akar untuk simpul apapun

· Penggunaan umum
* Memanipulasi data secara hierarki
* Membuat informasi mudah untuk dicari
* Memanipulasi data sorted lists



Referensi : 
http://id.wikipedia.org/wiki/Struktur_data
http://bertha-40207208.blogspot.com/2010/02/pengertian-struktur-data-dan-tipe-data.html 
http://typedatadantipestrukturdata.blogspot.com/

Struktur Data

Posted by Unknown

Unknown

Project

Diberdayakan oleh Blogger.

Copyright © NeroPendragon -Black Rock Shooter- Powered by Blogger - Designed by Johanes Djogan