twitter

selection sort is a sorting by using a comparator. comparison this time using a comparison of maximum and minimum simultaneously from right and left. The following source code more:



#include <cstdlib>
#include <iostream>

using namespace std;
      class Sorting {
            public :
                   Sorting (){
                    cout<<"Program sorting"<<endl<<endl;
                    }
                   void input();
                   void selection_sort();
                   void cetak();
                   void tukar(int&a, int&b);
                   void maksmin(int, int, int&, int&);

            private :
                    int i, j, n;
                    int x[100];
            };

      void Sorting::input(){
           cout<<"Banyak data : ";
           cin>>n;
           for(i = 0; i < n; i++){ //perulangan for
                 cout<<"Data ke-"<<(i + 1)<<" : ";
                 cin>>x[i]; //input array 1 dimension
                 }

           }
      void Sorting::cetak(){ 
           for(i = 0; i < n; i++){ //loop for
                 cout<<x[i]<<" ";
                 }
           cout<<endl;
           }
      void Sorting::tukar(int&a, int&b){ 
           int temp;
           temp=a;
           a=b;
           b=temp;
           }

       void Sorting::selection_sort(){
           int posmin, posmaks;
           int i = 0;
           int j = n-1;
           while(i <= j){ //loop while
                   maksmin(i,j, posmin,posmaks);
                   tukar(x[i], x[posmin]);
                   maksmin(i,j, posmin,posmaks);
                   tukar(x[j], x[posmaks]);
                   i++;
                   j--;
                   }
           }
          
      void Sorting :: maksmin(int awal, int akhir, int & posmin, int & posmaks){
           int maks=x[akhir];
           int min=x[awal];
           posmin = awal;
           posmaks = akhir;
           for(i = awal; i<= akhir; i++){
                    if(x[i] > maks){
                            maks=x[i];
                            posmaks = i;
                            }
                    if(x[i]< min){
                             min = x[i];
                             posmin = i;
                             }
                    }
           }
int main()
{
    Sorting a;
    a.input();
    cout<<"\nData sebelum disorting :"<<endl;
    a.cetak();
    a.selection_sort();
    cout<<"\nSorting menggunakan selection sort : "<<endl;
    a.cetak();
    cout<<"\n\n";

    system("PAUSE"); system("cls");
    return main ();
}



Running results :






Jumat, 08 Juli 2011 | 0 komentar | Label: