Selection Sort

Pengurutan seleksi (selection sort) mempunyai mekanisme seperti berikut : Mula-mula suatu penunjuk (diberi nama posAwal), yang menunjuk ke lokasi awal pengurutan data, diatur agar berisi indeks pertama dalam larik. Selanjutnya dicari bilangan terkecil yang terletak antara posisi sesudah yang ditunjuk oleh petunjuk tersebut hingga elemen yang terakhir dalam larik. Lokasi bilangan ini ditunjuk oleh posMin. Lalu tukarkan nilai bilangan terkecil tersebut dengan nilai yang ditunjuk posAwal. Proses seperti itu diulang dari posAwal bernilai 0 hingga n-2, dengan n menyatakan jumlah elemen dalam larik.

Prosedur selection Sort :

void selection_sort (int data[])
{
for(int i=0;i<n-1;i++)
{
pos=i;
for(int j=i+1;j<n;j++)
{
if (data[j]<data[pos] pos=j; //ascending
}
if(pos!=i) tukar(&data[pos],&data[i]);
}
}

Implementasi dalam bahasa Pemrograman C++ :


#include <iostream.h>
#include <conio.h>

class Sorting{
      friend istream& operator>>(istream& in, Sorting& a);
      friend ostream& operator<<(ostream& out, Sorting& a);
public:
       void selection_sort();
       int pencarianBiner(int low, int high);
       void minimum(int, int, int&);
        void tukar(int& , int&);
private:

        int data [10];
        int n,a,b;
};

istream& operator>>(istream& in, Sorting& masukan){
         cout<<"Banyak data : \n";
         in>>masukan.n;
         for(int i=0; i<masukan.n; i++){
              cout<<"Data ke - "<<i+1<<" = ";
              in>>masukan.data[i];
              }
              return in;
         }

ostream& operator<<(ostream& out, Sorting& keluaran){
        for(int i=0; i<keluaran.n; i++){
              out<<keluaran.data[i]<<" ";
              out<<"\n";
              }
              return out;
         }

void Sorting::minimum(int dari, int n, int &tempat){
     int min=data[dari];
     //int max=data[dari];
     for(int i= dari+1; i<n; i++)
     if(data[i] < min){
                min=data[i];
                tempat=i;
                }

     /* if(data[i] > max){
                max=data[i];
                cout<<max;
                }*/
     }

void Sorting::tukar(int &a, int &b){
     int temp=a;
     a=b;
     b=temp;
     }

void Sorting::selection_sort(){
     int t;
     for(int i=0; i<n; i++){
             minimum(i,n,t);
             tukar(data[i],data[t]);
     }
}

int main(){
    Sorting x;
    cin>>x;
    cout<<endl;
    cout<<x;
    x.selection_sort();
    cout<<endl;
    cout<<x;
    getch();
    return 0;
}

Versi Jeliot:


import jeliot.io.*;

public class Sorting {
    public static void main() {
       
int []a = new int [20];
int cur,x,temp,cur2,temp2;

System.out.print("Banyak Data : ");
x=Input.readInt();
    for(int i=0;i<x;i++){
    System.out.print("Data [");
    System.out.print(i+1);
    System.out.print("] : ");
    a[i]=Input.readInt();
    }
    for(int i=0;i<x;i++){
    cur=i;
    cur2=x;
    for(int k=i+1;k<x;k++){
            if(a[cur]>a[k]){
            cur=k;
            }
    }
    for(int t=x;t<x;t--){
            if(a[cur2]<a[t]){
            cur2=t;
            }
    
    temp2=a[t];
    a[t]=a[cur2];
    a[cur2]=temp2;
    }
    
    temp=a[i];
    a[i]=a[cur];
    a[cur]=temp;
    }
    for(int i=0;i<x;i++){
    System.out.print(" ");
    System.out.print(a[i]);
    }

System.out.print(" \n ");



    }
}


Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s