- Back to Home »
- Belajar Bahasa C , Mahir Bahasa C , Materi Bahasa C , Menguasai Bahasa C , Pemrograman Bahasa C »
- Metoda Pengurutan String Dengan Bahasa C
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.