Pengurutan (Sorting)

11
STRUKTUR DATA: ALGORITMA PENGURUTAN 1 Widodo ALGORITMA PENGURUTAN (SORTING) Teknik/algoritma untuk mengurutkan data sampai saat ini sudah banyak dikembangkan. Pada pembahasan materi sorting berikut ini akan dibahas 3 (tiga) algoritma untuk melakukan sorting: 1. Bubble Sort (Pengurutan gelembung) 2. Insertion Sort (Pengurutan sisip) 3. Selection sort (Pengurutan seleksi) 1. BUBBLE SORT Metode bubble sort dilakukan dengan cara elemen paling kecil di“apung”kan pada posisi paling kiri (jika ascending). Bubble sort akan dilakukan dengan pass sebanyak jumlah data kurang satu (n1) kali. Jika data berjumlah 10, maka akan terjadi 9 kali pass. Pada setiap pass, data akan dibandingkan dari yang paling kanan dengan data sebelumnya, jika data ken lebih kecil dari data n1, maka ditukar, jika tidak tetap. Hal tersebut dilakukan sampai dengan data pertama, sehingga pada akhir pass, data pertama akan dijamin sebagai data paling kecil. Pada pass berikutnya dilakukan hal yang sama sampai dengan data kedua (data pertama sudah yang terkecil). Demikian seterusnya dilakukan hingga pass yang terakhir. Berikut ilustrasi bagaimana bubble sort dijalankan. Misal data yang dimasukkan adalah: 10 15 3 7 6 14 22 1 100 4 Data di atas berjumlah n=10, berarti akan ada 9 pass (i=9) Misalkan data disimpan pada array s[], maka: Pass 1: j Perbandingan elemen Tukar/tidak Hasil sementara 10 s[10]<s[9]? (4<100) Tukar 10 – 15 – 3 – 7 – 6 – 14 – 22 – 1 – 4 – 100 9 s[9]<s[8]? (4<1) Tidak 10 – 15 – 3 – 7 – 6 – 14 – 22 – 1 – 4 – 100 8 s[8]<s[7]? (1<22) Tukar 10 – 15 – 3 – 7 – 6 – 14 – 1 – 22 – 4 – 100 7 s[7]<s[6]? (1<14) Tukar 10 – 15 – 3 – 7 – 6 – 1 – 14 – 22 – 4 – 100 6 s[6]<s[5]? (1<6) Tukar 10 – 15 – 3 – 7 – 1 – 6 – 14 – 22 – 4 – 100 5 s[5]<s[4]? (1<7) Tukar 10 – 15 – 3 – 1 – 7 – 6 – 14 – 22 – 4 – 100 4 s[4]<s[3]? (1<3) Tukar 10 – 15 – 1 – 3 – 7 – 6 – 14 – 22 – 4 – 100 3 s[3]<s[2]? (1<15) Tukar 10 – 1 – 15 – 3 – 7 – 6 – 14 – 22 – 4 – 100 2 s[2]<s[1]? (1<10) Tukar 1 – 10 – 15 – 3 – 7 – 6 – 14 – 22 – 4 – 100

Transcript of Pengurutan (Sorting)

STRUKTUR DATA: ALGORITMA PENGURUTAN

1 Widodo

ALGORITMA PENGURUTAN (SORTING)  Teknik/algoritma  untuk  mengurutkan  data  sampai  saat  ini  sudah  banyak dikembangkan. Pada pembahasan materi sorting berikut ini akan dibahas 3 (tiga) algoritma untuk melakukan sorting: 1. Bubble Sort (Pengurutan gelembung) 2. Insertion Sort (Pengurutan sisip) 3. Selection sort (Pengurutan seleksi)  1. BUBBLE SORT 

Metode bubble sort dilakukan dengan cara elemen paling kecil di‐“apung”‐kan pada posisi paling kiri (jika ascending). Bubble sort akan dilakukan dengan pass sebanyak jumlah data kurang satu (n‐1) kali. Jika data berjumlah 10, maka akan terjadi 9 kali pass. Pada setiap pass, data akan dibandingkan dari yang paling kanan dengan data sebelumnya,  jika data ke‐n  lebih kecil dari data n‐1, maka ditukar,  jika tidak tetap. Hal tersebut dilakukan sampai dengan data pertama, sehingga pada akhir pass, data pertama akan dijamin sebagai data paling kecil.  Pada  pass  berikutnya  dilakukan  hal  yang  sama  sampai  dengan  data  kedua (data  pertama  sudah  yang  terkecil).  Demikian  seterusnya  dilakukan  hingga pass yang terakhir. Berikut ilustrasi bagaimana bubble sort dijalankan.  Misal data yang dimasukkan adalah: 10   15   3   7   6   14   22    1   100   4  Data di atas berjumlah n=10, berarti akan ada 9 pass (i=9) Misalkan data disimpan pada array s[], maka:  Pass 1:  

j  Perbandingan elemen  Tukar/tidak Hasil sementara 10  s[10]<s[9]?  (4<100)  Tukar  10 – 15 – 3 – 7 – 6 – 14 – 22 – 1 – 4 – 100 

9  s[9]<s[8]?  (4<1)  Tidak  10 – 15 – 3 – 7 – 6 – 14 – 22 – 1 – 4 – 100 

8  s[8]<s[7]? (1<22)  Tukar  10 – 15 – 3 – 7 – 6 – 14 – 1 – 22 – 4 – 100 

7  s[7]<s[6]?  (1<14)  Tukar  10 – 15 – 3 – 7 – 6 – 1 – 14 – 22 – 4 – 100 

6  s[6]<s[5]?  (1<6)  Tukar  10 – 15 – 3 – 7 – 1 – 6 – 14 – 22 – 4 – 100 

5  s[5]<s[4]? (1<7)  Tukar  10 – 15 – 3 – 1 – 7 – 6 – 14 – 22 – 4 – 100 

4  s[4]<s[3]?  (1<3)  Tukar  10 – 15 – 1 – 3 – 7 – 6 – 14 – 22 – 4 – 100 

3  s[3]<s[2]?  (1<15)  Tukar  10 – 1 – 15 – 3 – 7 – 6 – 14 – 22 – 4 – 100 

2  s[2]<s[1]? (1<10)  Tukar  1 – 10 – 15 – 3 – 7 – 6 – 14 – 22 – 4 – 100 

STRUKTUR DATA: ALGORITMA PENGURUTAN

2 Widodo

Hasil akhir pass 1: 1 – 10 – 15 – 3 – 7 – 6 – 14 – 22 – 4 – 100   Pass 2:  

j  Perbandingan elemen  Tukar/tidak Hasil sementara 10  s[10]<s[9]?  (100<4)  Tidak  1 – 10 – 15 – 3 – 7 – 6 – 14 – 22 – 4 – 100 

9  s[9]<s[8]?  (4<22)  Tukar  1 – 10 – 15 – 3 – 7 – 6 – 14 – 4 – 22 – 100 

8  s[8]<s[7]? (4<14)  Tukar  1 – 10 – 15 – 3 – 7 – 6 – 4 – 14 – 22 – 100 

7  s[7]<s[6]?  (4<6)  Tukar  1 – 10 – 15 – 3 – 7 – 4 – 6 – 14 – 22 – 100 

6  s[6]<s[5]?  (4<7)  Tukar  1 – 10 – 15 – 3 – 4 – 7 – 6 – 14 – 22 – 100 

5  s[5]<s[4]? (4<3)  Tidak  1 – 10 – 15 – 3 – 4 – 7 – 6 – 14 – 22 – 100 

4  s[4]<s[3]?  (3<15)  Tukar  1 – 10 – 3 – 15 – 4 – 7 – 6 – 14 – 22 – 100 

3  s[3]<s[2]?  (3<10)  Tukar  1 – 3 – 10 – 15 – 4 – 7 – 6 – 14 – 22 – 100 

 Hasil akhir pass 2: 1 – 3 – 10 – 15 – 4 – 7 – 6 – 14 – 22 – 100   Pass 3:  

j  Perbandingan elemen  Tukar/tidak Hasil sementara 10  s[10]<s[9]?  (100<22)  Tidak  1 – 3 – 10 – 15 – 4 – 7 – 6 – 14 – 22 – 100 

9  s[9]<s[8]?  (22<14)  Tidak  1 – 3 – 10 – 15 – 4 – 7 – 6 – 14 – 22 – 100 

8  s[8]<s[7]? (14<6)  Tidak  1 – 3 – 10 – 15 – 4 – 7 – 6 – 14 – 22 – 100 

7  s[7]<s[6]?  (6<7)  Tukar  1 – 3 – 10 – 15 – 4 – 6 – 7 – 14 – 22 – 100 

6  s[6]<s[5]?  (6<4)  Tidak  1 – 3 – 10 – 15 – 4 – 6 – 7 – 14 – 22 – 100 

5  s[5]<s[4]? (4<15)  Tukar  1 – 3 – 10 – 4 – 15 – 6 – 7 – 14 – 22 – 100 

4  s[4]<s[3]?  (4<10)  Tukar  1 – 3 – 4 – 10 – 15 – 6 – 7 – 14 – 22 – 100 

 Hasil akhir pass 3: 1 – 3 – 4 – 10 – 15 – 6 – 7 – 14 – 22 – 100   Pass 4:  

j  Perbandingan elemen  Tukar/tidak Hasil sementara 10  s[10]<s[9]?  (100<22)  Tidak  1 – 3 – 4 – 10 – 15 – 6 – 7 – 14 – 22 – 100 

9  s[9]<s[8]?  (22<14)  Tidak  1 – 3 – 4 – 10 – 15 – 6 – 7 – 14 – 22 – 100 

8  s[8]<s[7]? (14<7)  Tidak  1 – 3 – 4 – 10 – 15 – 6 – 7 – 14 – 22 – 100 

7  s[7]<s[6]?  (7<6)  Tidak  1 – 3 – 4 – 10 – 15 – 6 – 7 – 14 – 22 – 100 

6  s[6]<s[5]?  (6<15)  Tukar  1 – 3 – 4 – 10 – 6 – 15 – 7 – 14 – 22 – 100 

5  s[5]<s[4]? (6<10)  Tukar  1 – 3 – 4 – 6 – 10 – 15 – 7 – 14 – 22 – 100 

STRUKTUR DATA: ALGORITMA PENGURUTAN

3 Widodo

Hasil akhir pass 4: 1 – 3 – 4 – 6 – 10 – 15 – 7 – 14 – 22 – 100   Pass 5:  

j  Perbandingan elemen  Tukar/tidak Hasil sementara 10  s[10]<s[9]?  (100<22)  Tidak  1 – 3 – 4 – 6 – 10 – 15 – 7 – 14 – 22 – 100 

9  s[9]<s[8]?  (22<14)  Tidak  1 – 3 – 4 – 6 – 10 – 15 – 7 – 14 – 22 – 100 

8  s[8]<s[7]? (14<7)  Tidak  1 – 3 – 4 – 6 – 10 – 15 – 7 – 14 – 22 – 100 

7  s[7]<s[6]?  (7<15)  Tukar  1 – 3 – 4 – 6 – 10 – 7 – 15 – 14 – 22 – 100 

6  s[6]<s[5]?  (7<10)  Tukar  1 – 3 – 4 – 6 – 7 – 10 – 15 – 14 – 22 – 100 

 Hasil akhir pass 5: 1 – 3 – 4 – 6 – 7 – 10 – 15 – 14 – 22 – 100   Pass 6:  

j  Perbandingan elemen  Tukar/tidak Hasil sementara 10  s[10]<s[9]?  (100<22)  Tidak  1 – 3 – 4 – 6 – 7 – 10 – 15 – 14 – 22 – 100 

9  s[9]<s[8]?  (22<14)  Tidak  1 – 3 – 4 – 6 – 7 – 10 – 15 – 14 – 22 – 100 

8  s[8]<s[7]? (14<15)  Tukar  1 – 3 – 4 – 6 – 7 – 10 – 14 – 15 – 22 – 100 

7  s[7]<s[6]?  (14<10)  Tidak  1 – 3 – 4 – 6 – 7 – 10 – 14 – 15 – 22 – 100 

 Hasil akhir pass 6: 1 – 3 – 4 – 6 – 7 – 10 – 14 – 15 – 22 – 100    Pass 7:  

j  Perbandingan elemen  Tukar/tidak Hasil sementara 10  s[10]<s[9]?  (100<22)  Tidak  1 – 3 – 4 – 6 – 7 – 10 – 14 – 15 – 22 – 100 

9  s[9]<s[8]?  (22<15)  Tidak  1 – 3 – 4 – 6 – 7 – 10 – 14 – 15 – 22 – 100 

8  s[8]<s[7]? (15<14)  Tidak  1 – 3 – 4 – 6 – 7 – 10 – 14 – 15 – 22 – 100 

 Hasil akhir pass 7: 1 – 3 – 4 – 6 – 7 – 10 – 14 – 15 – 22 – 100      

STRUKTUR DATA: ALGORITMA PENGURUTAN

4 Widodo

Pass 8:  

j  Perbandingan elemen  Tukar/tidak Hasil sementara 10  s[10]<s[9]?  (100<22)  Tidak  1 – 3 – 4 – 6 – 7 – 10 – 14 – 15 – 22 – 100 

9  s[9]<s[8]?  (22<15)  Tidak  1 – 3 – 4 – 6 – 7 – 10 – 14 – 15 – 22 – 100 

 Hasil akhir pass 8: 1 – 3 – 4 – 6 – 7 – 10 – 14 – 15 – 22 – 100   Pass 9:  

j  Perbandingan elemen  Tukar/tidak Hasil sementara 10  s[10]<s[9]?  (100<22)  Tidak  1 – 3 – 4 – 6 – 7 – 10 – 14 – 15 – 22 – 100 

 Hasil akhir pass 9: 1 – 3 – 4 – 6 – 7 – 10 – 14 – 15 – 22 – 100   Hasil akhir pass 9 ini juga menjadi hasil akhir data yang sudah terurut.   Algoritma bubble sort dalam bentuk pseudocode‐nya adalah:    for i 1 to (n-1) do for j n downto 1 do if s[j]<s[j-1] then temp s[j] s[j] s[j-1] s[j-1] temp endif endfor endfor

       

STRUKTUR DATA: ALGORITMA PENGURUTAN

5 Widodo

Contoh source code‐nya dalam bahasa C:  #include<stdio.h> #include<conio.h> int s[100],i,j,n,temp; main() { printf("Jumlah data = "); scanf("%d",&n); for(i=1;i<=n;i++) { printf("data ke-%d=",i); scanf("%d",&s[i]); } printf("\n\n"); printf("Data sebelum diurutkan: "); for(i=1;i<=n;i++) { printf("%d ",s[i]); } for(i=1;i<=n-1;i++) { for(j=n;j>=i+1;j--) { if(s[j]<s[j-1]) { temp=s[j]; s[j]=s[j-1]; s[j-1]=temp; } } } printf("\n\n\n"); printf("Data setelah diurutkan: "); for(i=1;i<=n;i++) { printf("%d ",s[i]); } getch(); }

  

2. INSERTION SORT Algoritma  pengurutan  insertion  sort  dilakukan  dengan  cara  melakukan scanning  sesuai  urutan  array,  yang  kemudian  akan  menyisipkan (menempatkan)  data  pada  posisi  yang  sesuai.  Scanning  dimulai  dari  data paling kiri ke kanan. Seperti pada bubble sort, pada  insertion sort  juga dibagi menjadi tahap‐tahap (pass).  

STRUKTUR DATA: ALGORITMA PENGURUTAN

6 Widodo

Pass 1 dianggap  tidak dihitung  karena hanya  scan data pertama, dan  sudah pasti  terurut.  Secara  resmi  algoritma  ini  akan  memulai  dari  pass  2,  yaitu scanning terhadap urutan 1 s.d 2, data ke‐2 akan ditempatkan pada posisi yang tepat.  Pada  pass  3  scanning  dilakukan  terhadap  data  1  s.d  3,  dengan menempatkan data k3‐3 pada posisi sesuai dengan tempatnya.  Berikut ilustrasi insertion sort dengan data yang sama seperti pada bubble sort. Misal data yang dimasukkan adalah: 10   15   3   7   6   14   22    1   100   4  Data di atas berjumlah n=10, berarti akan ada 9 pass dimulai dari 2 s.d 9. Misalkan data disimpan pada array s[], maka:  Pada  saat  pass  1  data  pertama,  yaitu  10  dianggap  sudah  terurut.  Maka langsung ke pass 2.  

 – 15 – 3 – 7 – 6 – 14 – 22 – 1 – 100 – 4 10 Pass 2: Cari posisi untuk s[2]=15 dalam urutan 10 – 15  

– 3 – 7 – 6 – 14 – 22 – 1 – 100 – 4 10 – 15  Pass 3: Cari posisi untuk s[3]=3 dalam urutan 10 – 15 – 3  

– 7 – 6 – 14 – 22 – 1 – 100 – 4 3 – 10 – 15  Pass 4: Cari posisi untuk s[4]=7 dalam urutan 3 – 10 – 15 – 7  

 – 6 – 14 – 22 – 1 – 100 – 4 3 – 7 – 10 – 15 Pass 5: Cari posisi untuk s[5]=6 dalam urutan 3 – 7 – 10 – 15 – 6  

 – 14 – 22 – 1 – 100 – 4 3 – 6 – 7 – 10 – 15 Pass 6: Cari posisi untuk s[6]=14 dalam urutan 3 – 6 – 7 – 10 – 15 – 14  

 – 22 – 1 – 100 – 4 3 – 6 – 7 – 10 – 14 – 15  

STRUKTUR DATA: ALGORITMA PENGURUTAN

7 Widodo

Pass 7: Cari posisi untuk s[7]=22 dalam urutan 3 – 6 – 7 – 10 – 14 – 15 – 22   

 – 1 – 100 – 4 3 – 6 – 7 – 10 – 14 – 15 – 22 Pass 8: Cari posisi untuk s[8]=1 dalam urutan 3 – 6 – 7 – 10 – 14 – 15 – 22 – 1  

 – 100 – 4 1 – 3 – 6 – 7 – 10 – 14 – 15 – 22 Pass 9: Cari posisi untuk s[9]=100 dalam urutan 1 – 3  – 6 – 7 – 10 – 14 – 15 – 22 – 100  

– 4 1 – 3 – 6 – 7 – 10 – 14 – 15 – 22 – 100  Pass 10: Cari posisi untuk s[10]=4 dalam urutan 1 – 3  – 6 – 7 – 10 – 14 – 15 – 22 – 100 – 4 

 1 – 3 – 4 – 6 – 7 – 10 – 14 – 15 – 22 – 100  Hasil  akhir  pass  10  ini  juga  menjadi  hasil  akhir  dari  insertion  sort  secara keseluruhan.  Algoritma insertion sort dalam bentuk pseudocode‐nya adalah:   for i 2 to n do x i while(s[x]<s[x-1]) temp=s[x]; s[x]=s[x-1]; s[x-1]=temp; x=x-1;

          

STRUKTUR DATA: ALGORITMA PENGURUTAN

8 Widodo

 Contoh source code‐nya dalam bahasa C:  #include<stdio.h> #include<conio.h> int s[100],i,j,n,temp,x; main() { printf("Jumlah data = "); scanf("%d",&n); printf("\n"); for(i=1;i<=n;i++) { printf("data ke-%d=",i); scanf("%d",&s[i]); } printf("\n\n"); printf("Data sebelum diurutkan\n"); for(i=1;i<=n;i++) { printf("%d ",s[i]); } for(i=2;i<=n;i++) { x=i; while(s[x]<s[x-1]) { temp=s[x]; s[x]=s[x-1]; s[x-1]=temp; x=x-1; } } printf("\n\n\nData setelah diurutkan"); printf("\n"); for(i=1;i<=n;i++) { printf("%d ",s[i]); } getch(); }

  

3. SELECTION SORT Algoritma selection sort dilakukan dengan menempatkan nilai maksimum atau minimum  pada  bagian  paling  kanan  atau  kiri.  Prosesnya  adalah  dengan melakukan scanning dari data ke 1 s.d ke n, tempatkan yang paling besar atau kecil  sesuai  urutan  (ascending  atau  descending).  Pada  pass  berikutnya scanning  dilakukan  dari  data  ke‐1  s.d  data  ke  (n‐1),  tempatkan  nilai 

STRUKTUR DATA: ALGORITMA PENGURUTAN

9 Widodo

maksimum/minimum pada posisi  (n‐1), demikian seterusnya. Pada bagian  ini akan  diilustrasikan  untuk  urut  ascending,  berarti  menempatkan  nilai maksimum pada bagian kanan.  Jumlah pass = n‐1, pada setiap pass cari nilai maksimum kemudian tukar nilai maksimum tersebut dengan elemen ke‐n, lalu n dikurang 1.  Misal data yang dimasukkan adalah: 10   15   3   7   6   14   22    1   100   4  Data di atas berjumlah n=10, berarti akan ada 9 pass dimulai dari 1 s.d 9. Misalkan data disimpan pada array s[], maka:  Pass 1: Cari nilai maksimum pada array 1 s.d 10, nilai maks s[9]=100, maka 10 – 15 – 3 – 7 – 6 – 14 – 22 – 1 – 100 – 4, menjadi: 10 – 15 – 3 – 7 – 6 – 14 – 22 – 1 – 4 –   100 Pass 2: Cari nilai maksimum pada array 1 s.d 9, nilai maks s[7]=22, maka 10 – 15 – 3 – 7 – 6 – 14 – 22 – 1 – 4 – 100, menjadi: 10 – 15 – 3 – 7 – 6 – 14 – 4 – 1 –   22 – 100 Pass 3: Cari nilai maksimum pada array 1 s.d 8, nilai maks s[2]=15, maka 10 – 15 – 3 – 7 – 6 – 14 – 4 – 1 –  , menjadi: 22 – 10010 – 1 – 3 – 7 – 6 – 14 – 4 –   15 – 22 – 100 Pass 4: Cari nilai maksimum pada array 1 s.d 7, nilai maks s[6]=14, maka 10 – 1 – 3 – 7 – 6 – 14 – 4 –  , menjadi: 15 – 22 – 10010 – 1 – 3 – 7 – 6 – 4 –   14 – 15 – 22 – 100 Pass 5: Cari nilai maksimum pada array 1 s.d 6, nilai maks s[1]=10, maka 10 – 1 – 3 – 7 – 6 – 4 –  , menjadi: 14 – 15 – 22 – 1004 – 1 – 3 – 7 – 6 –   10 – 14 – 15 – 22 – 100  

STRUKTUR DATA: ALGORITMA PENGURUTAN

10 Widodo

 Pass 6: Cari nilai maksimum pada array 1 s.d 5, nilai maks s[4]=7, maka 4 – 1 – 3 – 7 – 6 –  , menjadi: 10 – 14 – 15 – 22 – 1004 – 1 – 3 – 6 –   7 – 10 – 14 – 15 – 22 – 100 Pass 7: Cari nilai maksimum pada array 1 s.d 4, nilai maks s[1]=4, maka 4 – 1 – 3 – 6 –  , menjadi: 7 – 10 – 14 – 15 – 22 – 1006 – 1 – 3 –   4 – 7 – 10 – 14 – 15 – 22 – 100 Pass 8: Cari nilai maksimum pada array 1 s.d 3, nilai maks s[1]=6, maka 6 – 1 – 3 –  , menjadi: 4 – 7 – 10 – 14 – 15 – 22 – 1003 – 1 –   6 – 4 – 7 – 10 – 14 – 15 – 22 – 100 Pass 9: Cari nilai maksimum pada array 1 s.d 2, nilai maks s[1]=3, maka 3 – 1 –  , menjadi: 6 – 4 – 7 – 10 – 14 – 15 – 22 – 1001 –   3 – 6 – 4 – 7 – 10 – 14 – 15 – 22 – 100 Hasil pass 9 menjadi hasil akhir yang sudah terurut.  Algoritma selection sort dalam bentuk pseudocode‐nya adalah:   imaks 0 for i n downto 2 do for j i downto 1 do if s[j]>s[imaks] imaksj temp s[i] s[i] s[imaks] s[imaks] temp imaks 0

    

STRUKTUR DATA: ALGORITMA PENGURUTAN

11 Widodo

  Contoh source‐code‐nya dalam bahasa C:  #include<stdio.h> #include<conio.h> int s[100],i,j,n,imaks,temp; main() { printf("Jumlah data = "); scanf("%d",&n); printf("\n"); for(i=1;i<=n;i++) { printf("data ke-%d=",i); scanf("%d",&s[i]); } printf("\n\n"); printf("Data sebelum diurutkan\n"); for(i=1;i<=n;i++) { printf("%d ",s[i]); } imaks=0; for(i=n;i>=2;i--) { for(j=i;j>=1;j--) { if(s[j]>s[imaks]) { imaks=j; } } temp=s[i]; s[i]=s[imaks]; s[imaks]=temp; imaks=0; } printf("\n\n"); printf("Data setelah diurutkan\n"); for(i=1;i<=n;i++) { printf("%d ",s[i]); } getch(); }