Senin, 07 September 2015

Pengurutan data menggunakan Bubble sort

Seperti judul diatas "Pengurutan Data menggunakan Bubble sort", maka dalam kesempatan ini saya akan menunjukan bagaimana cara membuat program yang digunakan untuk mengurutkan sebuah data. Program untuk mengurutkan data kali ini akan saya buat dengan menggunakan metode sorting "Bubble sort".

Program yang saya buat adalah program untuk mengurutkan perolehan waktu dari beberapa peserta lomba  balap karung dari yang tercepat sampai yang terlama.

Berikut source code dari program yang saya buat. 

#include <stdio.h>
#include <stdlib.h>
struct waktu { //deklarasi struct
    int no, jam, menit, detik, waktu; // deklarasi variabel yang di butuhkan untuk pengukuran waktu
    char nama[25];
};

int main()
{
    int x,i,y,z; //pendeklarasian variabel i, y, z untuk melooping// x jumlah peserta
    printf("Masukkan jumlah peserta = ");

    scanf("%d",&x); // untuk menyimpan jumlah peserta
    struct waktu psrta[x], swap; //membuat variabel baru dari peserta dengan nama psrta menggunakan array sejumlah inputan x, dan membuat variabel swap

    printf("\nMasukan perolehan waktu peserta\n\n");
    for(i=0; i < x; i++) // looping untuk memasukan perolehan waktu dari masing masing peserta
        {
            printf("No : %d \n",i+1);
            printf("Nama : ");
            scanf("%s",&psrta[i].nama);//untuk menyimpan nama yang di inputkan
            printf("Jam : ");
            scanf("%d",&psrta[i].jam);//untuk menyimpan jam yang di inputkan
            printf("Menit : ");
            scanf("%d",&psrta[i].menit); //untuk menyimpan menit yang di inputkan
            printf("Detik : ");
            scanf("%d",&psrta[i].detik);//untuk menyimpan detik yang di inputkan
            printf("\n\n");
            // penjumlahan perolehan waktu dari masing" peserta yang nantinya akan dijadikan pembanding dari masing" perolehan waktu
            psrta[i].waktu = (psrta[i].jam*3600)+(psrta[i].menit*60)+(psrta[i].detik);

        };

    // sorting menggunakan bubbel sort
    for(z=0; z<x-1; z++)
        {
        for(y=0; y<x-1; y++)
            {
            if(psrta[y].waktu > psrta[y+1].waktu) {
                swap = psrta[y]; //mengisi swap dengan pserta awal
                psrta[y] = psrta[y+1]; //mengisi pserta awal dengan pserta selanjutnya
                psrta[y+1] = swap; //mengisi pserta selanjutnya dengan swap
                }
            }
        }
    // tampilkan waktu setelah di urutkan
    for(i=0; i<x; i++) {
       printf("%d %s | %d jam | %d menit | %d detik\n",i+1,psrta[i].nama,psrta[i].jam,psrta[i].menit,psrta[i].detik);
    }
}

0 komentar:

Posting Komentar