Popular Post

Posted by : ClownMan Saturday, August 1, 2015

            Sebelumnya telah dibahas tentang quick sort dan bubble sort yang dapat dipergunakan untuk mengurutkan data. Pada pembahasan tersebut data yang diurutkan berupa angka. Sekarang bagaimana apabila yang diurutkan adalah sebuah string? Artikel ini akan membahas hal tersebut. Sebagai basis pengurutan akan digunakan metoda bubble sort.
            Kasus yang diambil kali ini adalah pembuatan sebuah program yang digunakan untuk mengurutkan beberapa nama yang diinputkan. Listing program selengkapnya diberikan pada listing 1.

Listing 1. Pengurutan String

#include <stdio.h>
#define N 20

char nama[N][20];
int i, j, k, l;

main()
{
            int jml;
            char jumlah[10];
            clrscr();
           
            printf("Jumlah Nama yang akan diurutkan = ");
            gets(jumlah);
            jml=atoi(jumlah);
           
            //input data
            for (i=0;i<jml;i++)
            {
                        printf("\nNama ke %d : ",i+1);
                        gets(&nama[i][0]);
            }
           
            // memanggil fungsi bubble()
            bubble(jml);
           
            //output
            printf("\nNama yang telah diurutkan");
            for (i=0;i<jml;i++)
            {
                        printf("\n%-20s",&nama[i][0]);
            }
}

//fungsi bubble()
bubble(n)
int n;
{
            char temp;
            for (i=1;i<=n;i++)
            {
                        for (j=i;j<n;j++)
                        {
                                    for (l=0;l<20;l++)
                                    {
                                                if (nama[i-1][l]<nama[j][l])
                                                {
                                                            break;
                                                }
                                                if (nama[i-1][l]>nama[j][l])
                                                {
                                                            //menukar semua karakter dalam satu nama
                                                            for (k=0,k<20;k++)
                                                            {
                                                                        temp=nama[i-1][k];
                                                                        nama[i-1][k]=nama[j][k];
                                                                        nama[j][k]=temp;
                                                            }
                                                            break;
                                                }
                                    }
                        }
            }
}

            Sekarang cobalah jalankan program tersebut dan inputkan nama-nama berikut ini untuk diurutkan:

·         Superman
·         Suparman
·         Supartinah
·         Supardiono
·         Supersonicman
·         Suparjo

            Hasil pengurutan yang akan diberikan oleh program adalah sebagai berikut:

Supardiono
Suparjo
Suparman
Supartinah
Superman
Supersonicman

            Bandingkan hasilnya dengan gambar 1.
Gambar 1

            Perhatikan bahwa program akan mengurutkan nama-nama tersebut sampai ditemukan karakter yang berbeda.
            Program tersebut akan bersifat case sensitive dan biasanya huruf kapital akan diurutkan terlebih dahulu. Sebabnya adalah nomor ASCII untuk huruf kapital lebih kecil daripada nomor ASCII huruf kecil. Jadi misalnya input program di atas dituliskan sebagai berikut:

·         SUPERMAN
·         SUPARMAN
·         Supartinah
·         supardiono
·         SUPERsoniCMAN
·         suparJO

            Maka hasil pengurutan adalah sebagai berikut:

SUPARMAN
SUPERMAN
SUPErsoniCMAN
Supartinah
suparJO
supardiono

            Bandingkan dengan gambar 2.

Gambar 2

            Dengan demikian untuk dapat mengurutkan dengan hasil yang benar, maka penulisan nama-nama tersebut harus konsisten. Jika hendak dituliskan dengan huruf kapital, maka semua huruf kapital, jika hendak dituliskan dengan huruf kecil, maka semua huruf kecil. Demikian pula jika hanya huruf pertama saja yang huruf kapital.
            Bagaimana jika program tersebut “nekad” digunakan untuk mengurutkan angka? Kita coba saja untuk mengurutkan angka-angka sebagai berikut:

125
54
1463
9
744

            Ternyata hasil yang diberikan adalah sebagai berikut:

125
1463
54
744
9

Gambar 3


            Jadi program tersebut tidak dapat digunakan untuk mengurutkan bilangan. Bilangan akan dianggap sebagai string dan diurutkan berdasarkan “kepalanya”, bukan nilainya. 

Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Komputer Skills (Serba Serbi Tehnik Komputer) - Date A Live - Powered by Blogger - Designed by Johanes Djogan - Published By Responsive blogger Templates