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 12

TUGAS  Akan dibuat Linked List untuk mengelola data mahasiswa dengan struktur NIM, NAMA,NILAI. Data tersusun naik berdasarkan NILAI.  Buatlah program untuk mengisikan data baru  Buatlah program untuk menampilkan data dengan NILAI sama dengan 90  Buatlah program untuk menampilkan seluruh data  Buatlah program untuk menghapus data dengan NIM sama dengan 2007140022.  Buatlah program untuk menghitung nilai rata-rata kelas. CONTOH PROGRAM  #include <iostream> #include <conio.h> #include <stdio.h> #include <windows.h> using namespace std; int pilih; void pilihan(); struct SIMPUL{  char nim[20];  int NIM;  char nama [40];  char gender [20];  int info;  float nilai;  SIMPUL *prev, *next; }; SIMPUL *data, *front=NULL, *rear=NULL,*help,*del, *q; void BUAT_SIMPUL(int X) { data=(SIMPUL *)malloc(sizeof(SIMPUL)); if(data!=NULL) data->info=X; else { cout<<"Membuat simpul gagal"; exit(1); } } voi...

Tugas Pertemuan 8

SOAL 1. Buatlah suatu program Animasi Deque dengan 6 buah pilihan : INSERT KIRI, INSERT KANAN, DELETE KIRI, DELETE KANAN, CETAK ANTRIAN, QUIT.   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]; int 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

Tugas Pertemuan 13

TUGAS  Buat program animasi Linear Doubly Linked List untuk mengelola data mahasiswa dengan struktur mahasiswa sbb : NAMA, NIM, GENDER, NILAI . Data terurut naik berdasarkan NIM.Program dibuat dalam bentuk menu dengan pilihan : INSERT DATA, HAPUS DATA, CETAK DATA, EXIT.  Ket :  INSER DATA : menambah data  HAPUS DATA : menghapus satu data berdasarkan kriteria  NIM CETAK DATA : mencetak seluruh isi linked list   EXIT : Keluar/selesai   Tampilan menu :                    LIN. DOUBLY LINKED LIST                    ==========================  1. INSERT DATA  2. HAPUS DATA  3. CETAK DATA  4. EXIT Pilihan (1 – 4) :  CONTOH PROGRAM  #include <iostream> #include <conio.h> #include <stdio.h> #include <windows.h> using namespace std; int pilih; void pilihan(); struct SIMPUL{  char nim[20]; ...