Langsung ke konten utama

Tugas Pertemuan 18

Dalam pemograman pada bahasa C memiliki cara untuk mengurutkan data. Konsep sorting dapat memudahkan untuk mengurutkan data acak. Macam-macam metode sorting dalam bahasa C antara lain :


1. Bubble Sort

Bubble sort adalah metode pengurutan data dengan cara melakukan penukaran data tepat di sebelahnya secara terus menerus sampai dipastikan dalam satu iterasi tidak ada lagi perubahan. Jika tidak ada perubahan maka data sudah terurut.

Proses pengurutan Bubble Sort

Berikut merupakan proses pengurutan Bubble Sort dengan array "7 9 4 1 5".

Proses pertama :

(7 9 4 1 5) menjadi (7 9 4 1 5)
(7 9 4 1 5) menjadi (7 4 9 1 5)
(7 4 9 1 5) menjadi (7 4 1 9 5)
(7 4 1 9 5) menjadi (7 4 1 5 9)

Proses kedua :

(7 4 1 5 9) menjadi (4 7 1 5 9)
(4 7 1 5 9) menjadi (4 1 7 5 9)
(4 1 7 5 9) menjadi (4 1 5 7 9)
(4 1 5 7 9) menjadi (4 1 5 7 9)

Proses ketiga :

(4 1 5 7 9) menjadi (1 4 5 7 9)
(1 4 5 7 9) menjadi (1 4 5 7 9)
(1 4 5 7 9) menjadi (1 4 5 7 9)
(1 4 5 7 9) menjadi (1 4 5 7 9)

Jika diperhatikan, pada proses ketiga masih terus berjalan agar tidak ada satupun penukaran pada suatu proses. Proses ini dilakukan untuk verifikasi data. Kelebihan metode ini yaitu metode yang paling sederhana, namun kekurangannya ialah tidak efisien karena jika mengurutkan data yang besar maka akan sangat lama prosesnya.

Contoh program sorting menggunakan Bubble Sort :

#include <stdio.h>

int main()
{
    int i,j,n,t, A[100];
    printf("Masukkan banyak data : "); scanf("%d", &n);

    for(i=1; i<=n; i++)
    {
        printf("Data %d = ", i); scanf("%d", &A[i]);
    }

    for(i=1; i<=(n-1); i++)
    {
        for(j=n; j>=(i+1); j--)
        {
            if(A[j-1]>A[j])
            {
                t=A[j-1];
                A[j-1] = A[j];
                A[j] = t;
            }
        }
    }

    printf("\nUrutannya adalah : ");
    for(i=1; i<=n; i++)
    {
        printf("%d ", A[i]);
    }
    printf("\n");
    return 0;
}




2. Insertion Sort

Insertion Sort merupakan metode pengurutan data dengan menempatkan setiap elemen data pada posisinya dengan cara melakukan perbandingan. Metode ini sama seperti mengurutkan karti, dimana jika suatu kartu dipindah tempatkan posisinya, maka kartu lainnya akan bergeser sesuai kondisi pemindahan kartu tersebut.

Proses pengurutan Insertion Sort :

  2    3    9    6    4    5    1
  2    3    9    6    4    5    1
  2    3    9    6    4    5    1
  2    3    6    9    4    5    1
  2    3    4    6    9    5    1
  2    3    4    5    6    9    1
  1    2    3    4    5    6    9  

Contoh program sorting menggunakan Insertion Sort :

#include <stdio.h>

int main ()
{
    int angka[100];
    int i, j, a, n;

    printf("Masukkan jumlah data : "); scanf("%d", &n);
    printf("Masukkan data :\n");
    for (i = 0; i < n; ++i)
    {
        printf("Data ke-%d = ", i+1); scanf("%d", &angka[i]);
    }

    for (i = 0; i < n; ++i)
    {
        for (j = i + 1; j < n; ++j)
        {
            if (angka[i] > angka[j])
            {
                a = angka[i];
                angka[i] = angka[j];
                angka[j] = a;
            }
        }
    }

    printf("\nSorting dalam bentuk descending\n");
    for (i = 0; i < n; ++i)
    {
        printf("%d\t", angka[i]);
    }
    return 0;
}




3. Selection Sort

Selection Sort merupakan kombinasi antara sorting dan searching. Metode ini sangat sederhana karena setiap proses akan dicari elemen-elemen yang belum diurutkan yang terkecil (ascending) atau terbesar (descending) yang akan ditukarkan ke posisi yang tepat di dalam array.

Proses pengurutan Selection Sort :

  7    5    1    9    2    6    4  
  1    5    7    9    2    6    4
  1    2    7    9    5    6    4
  1    2    4    9    5    6    7
  1    2    4    5    9    6    7
  1    2    4    5    6    9    7
  1    2    4    5    6    7    9 
  1    2    4    5    6    7    9   

Contoh program menggunakan Selection Sort :

#include <stdio.h>

int main()
{
    int a,b,temp,total;
    int data[20];
    printf("Masukkan jumlah data = ");scanf("%d",&total);
    for(a=0;a<total;a++)
    {
        printf("masukkan nilai pada INDEX ke %d = ",a+1);scanf("%d",&data[a]);
    }

    for(a=0;a<total-1;a++)
    {
        for(b=a+1;b<total;b++)
        {
            if(data[a]>data[b])
            {
                temp=data[b];
                data[b]=data[a];
                data[a]=temp;
            }
        }
    }

    printf("\n\nData setelah diurut : ");
    for(a=0;a<total;a++)
    {
        printf("%d  ",data[a]);
    }
    printf("\n");

    return 0;
}



4. Counting Sort

Counting sort adalah suatu metode pengurutan dimana dalam proses pengurutannya yaitu dengan menentukan posisi elemen suatu nilai. Jadi pada prosesnya dibutuhkan suatu rentang nilai yang sudah diketahui dan pada prosesnya menentukan jumlah nilai yang nilainya lebih kecil dari elemen lain agar dapat menentukan posisi nilai tersebut. Proses Counting Sort ini terbilang efisien dan efektif serta prosesnya tidak memakan waktu lama.

Contoh Program Counting Sort :


#include <stdio.h>

int main()
{
    int L[20], temp, i, j, n=6, idx;
    printf("Masukkan 6 Element : \n");

    for(i=0; i<n; i++)
    {
        printf("Masukkan Bilangan : "); scanf("%d", &L[i]);
    }

    printf("\nSebelum di sorting : ");
    for(i=0; i<n; i++)
    {
        printf("%d ", L[i]);
    }

    for(i=0; i<(n-1); i++)
    {
        idx=i;
        for(j=i+1; j<n; j++)
        {
            if(L[j]<L[idx])
            {
                idx=j;
            }
        }
        temp=L[i];
        L[i]=L[idx];
        L[idx]=temp;
    }

    printf("\nSetelah Sorting : ");
    for(i=0; i<n; i++)
    {
        printf("%d ", L[i]);
    }
    printf("\n");
    return 0;
}




Komentar

Postingan populer dari blog ini

Tugas Pertemuan 6

SOAL 1. Buatlah suatu program Animasi Antrian dengan 4 buah pilihan : INSERT, DELETE, CETAK ANTRIAN, QUIT. Jika dipilih INSERT : program akan meminta user untuk menginput sebuah karakter yang akan dimasukan kedalam antrian Jika dipilih DELETE : maka karakter pertama masuk akan dikeluarkan dari antrian Jika dipilih CETAK ANTRIAN : komputer menampilkan karakter yang ada pada antrian Jika dipilih QUIT : program keluar   Jawaban #include<stdio.h> #include #include #include #define n 10 using namespace std; void INSERT(); void DELETE(); void CETAKLAYAR(); void Inisialisasi(); void RESET(); int PIL,F,R; char PILIHAN [1],HURUF; char Q[n]; void main ( ) { Inisialisasi(); do { cout >PILIHAN; PIL=atoi(PILIHAN); switch (PIL) { case 1: INSERT (); break; case 2: DELETE(); break; case 3: CETAKLAYAR (); break; default: cout >HURUF; Q[++R]=HURUF; } else cout
Digital marketing dalam perspektif seorang pengusaha atau pebisnis lebih kepada sistem pemasaran dengan menggunakan media internet. Sudah pasti, di dalamnya termasuk mobile phone hingga beberapa situs jejaring sosial lainnya. Hanya saja, agar Teknik ini lebih mengena kepada sasaran, sepertinya Teknik promosi lebih dikesampingkan dan mengutamakan komunikasi. Menjalin hubungan secara personal dengan konsumen dengan cara mendengar keluhan atau saran akan membuat pelanggan lebih merasa dihargai. Yang pada akhirnya akan memberikan nilai tambah terhadap perkembangan bisnis terutama brand perusahaan. Terlihat sederhana namun sulit untuk dipastikan terlebih bagi mereka yang kurang memahami akan pengertian digital marketing sebenarnya. (Daengs, Achmad, Andi Farouq, 2016 : 287-293). Menurut Urban (2004:2) Digital Marketing menggunakan internet dan teknologi informasi untuk memperluas dan meningkatkan fungsi marketing tradisional. Definisi ini berkonsentrasi pada seluruh marketing tradisi...

Tugas Pertemuan 14

  Latihan  Pohon dengan jumlah simpul=273 merupakan Full atau atau Complete tree  Berapa kedalamannya?  Nomor berapa simpul terkiri dari level tersebut?  Berapa jumlah maksimum simpul pada level 7  Nomor berapa anak kanan dari simpul ke 180? Ada dilevel berapa anak tersebut  Nomor berapa orang tua dari simpul ke 83? Ada di level berapa orang tua tertsebut?  Jawaban : Complete tree 9 level Nomor 256 64 Simpul tidak ada, karena rumus anak kanan adalah 2n+1, maka 2(180)+1=361. sementara jumlah simpul sebanyak 273. orang tua dari simpul ke 83 adalah 41, berada pada level 6. Kirimkan Ini lewat Email BlogThis! Berbagi ke Twitter Berbagi ke Facebook