Program C++ Pengurutan (Sorting) Data Acak dengan Metode Bubble Sort, Selection Sort, dan Shell Sort


Script

#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
#include <time.h>
#include <windows.h>
#define MAX 1

bubble();
SelectionSort();
shell();
int pilihan,hitung,i;
char ulang,pilih;
char nx[10];
int data[MAX];
int data1[100];
int temp;
int n;
int cek(char str[])
{
 int i, panjang;
 panjang=strlen(str);
 for(i=0;i<panjang;i++)
 {
 if((i==0)&&(str[i]=='-'))
 i++;
 if(!isdigit(str[i]))
 {
 cout<<"Input salah ! Ulangi input !\n";
 return 0;
 }
 }
 return 1;
}
int main()
{
awal :
clrscr();
do
 {
/*int n;
 for (hitung=0;hitung<8;hitung++)
 data1[hitung]=data[hitung]; */
cout<<"========================"<<endl;
 cout<<"| Program Sorting Data |"<<endl;
 cout<<"========================"<<endl;
 cout<<" "<<endl<<endl;
 cout<<"Masukkan Banyak Data : ";
 cin>>nx;
 cout<<endl;
 }
while(!cek(nx));
 n=atoi(nx);
 int data[100];
 srand(time(NULL));
 int i;
 for(i=0;i<n;i++)
 {
 data[i]= rand()%n;
 cout<<data[i]<<" ";
 }
cout<<endl;
{
 for (hitung=0;hitung<n;hitung++)
 data1[hitung]=data[hitung];
cout<<"\n==========================\n";
 cout<<"| Pilihan Metode Sorting |\n";
 cout<<"--------------------------\n";
 cout<<"| 1.Bubble sort |\n";
 cout<<"| 2.Selection sort |\n";
 cout<<"| 3.Shell sort |\n";
 cout<<"==========================\n\n";
cout<<"Pilih Metorde Sorting <1-3>: ";
 cin>>pilihan;
 cout<<"------------------------------------------------\n";
 cout<<"Pilihan pengurutan Ascending/Descending [a/d]? ";
 cin>>pilih;
 switch (pilihan)
 {
 case 1:
 bubble();
 break;
 case 2:
 SelectionSort();
 break;
 case 3:
 shell();
 break;
 default:
 cout<<"kode salah";
 break;
 }

 cout<<"\nUrutlan Lagi? [y/t]";
 cin>>ulang;
 cout<<"\n\n";
 if (ulang=='y'||ulang=='Y')
 {
 goto awal;
 }
 else
 {
 exit(1);
 }
 }
}

bubble()
{
 cout<<"------------------------------------------------\n";
 for (int i=0; i<n-1; i++)
 for (int ii=0; ii<n-1; ii++)
 if (data1[ii]>=data1[ii+1])
 {
 temp=data1[ii];
 data1[ii]=data1[ii+1];
 data1[ii+1]=temp;
 }
if (pilih=='a')
 {
 cout<<"\nMenjalankan metode Bubble Sort dengan pengurutan Ascending";
 cout<<"\n\nHasil Pengurutan: \n\n";
 for(int iii=0; iii<n; iii++)
 cout<<data1[iii]<<" ";
 }
 if (pilih=='d')
 {
 cout<<"\nMenjalankan metode Bubble Sort dengan pengurutan Descending";
 cout<<"\n\nHasil Pengurutan: \n\n";
 for(int iii=n-1; iii>=0; iii--)
 cout<<data1[iii]<<" ";
 }
 cout<<"\n";
}

SelectionSort()
{
 cout<<"------------------------------------------------\n";
 int kecil;
 for (int i=0;i<n;i++)
 {
 kecil=i;
 for (int j=kecil+1; j<n;j++)
 {
 if (data1[kecil]>data1[j])
 {kecil=j;}
 }
 temp=data1[i];
 data1[i]=data1[kecil];
 data1[kecil]=temp;
 }
if (pilih=='a')
 {
 cout<<"\nMenjalankan metode Selection Sort dengan pengurutan Ascending";
 cout<<"\n\nHasil Pengurutan: \n\n";
 for(int iii=0; iii<n; iii++)
 cout<<data1[iii]<<" ";
 }
 if (pilih=='d')
 {
 cout<<"\nMenjalankan metode Selection Sort dengan pengurutan Dscending";
 cout<<"\n\nHasil Pengurutan: \n\n";
 for(int iii=n-1; iii>=0; iii--)
 cout<<data1[iii]<<" ";
 }
 cout<<"\n";
}

shell()
{
 cout<<"------------------------------------------------\n";
int gap=n/2;
 do
 {
 int swap;
 do
 
 {
 swap=0;
 for(int i=0;i<n-gap;i++)
 if(data1[i]>data1[i+gap])
 {
 int t=data1[i];
 data1[i]=data1[i+gap];
 data1[i+gap]=t;
 swap=1;
 }
 }
 while(swap);
 }
 while(gap=gap/2);

if (pilih=='a')
 {
 cout<<"\nMenjalankan metode Shell Sort dengan pengurutan Ascending";
 cout<<"\n\nHasil Pengurutan: \n\n";
 for(i=0;i<n;i++)
 cout<<data1[i]<<" ";
 }
 if (pilih=='d')
 {
 cout<<"\nMenjalankan metode Shell Sort dengan pengurutan Desscending";
 cout<<"\n\nHasil Pengurutan: \n\n";
 for(i=n-1;i>=0;i--)
 cout<<data1[i]<<" ";
 }
cout<<endl;
}

HasilScreenHunter_202 Feb. 22 16.35

ScreenHunter_201 Feb. 22 16.35

ScreenHunter_200 Feb. 22 16.35

Baca lebih lanjut

Program C++ Pengurutan (Sorting) dengan Metode Radix Sort


Script

/* quick sort*/
# include <iostream.h>
# include <iomanip.h>
# include <conio.h>
//void quickSort(int[],int);
void q_sort(int[],int,int);

int main ()
{
 int NumList[8]={5,34,32,25,75,42,22,2};
 // int temp;
 cout<<" Data Sebelum diurutkan: \n";
 for(int d=0;d<8;d++)
 {
 cout<<setw(3)<<NumList[d];
 }
 cout<<"\n\n";
 q_sort(NumList,0,8);
 cout<<" Data setelah diurutkan: \n";
 for(int iii=0;iii<8;iii++)
 cout<<setw(3)<<NumList[iii]<<endl<<endl;
 // quickSort(NumList,8);
 getch();
}
/*
void quickSort(int numbers[],int array_size)
{
 q_sort(numbers,0,array_size-1);
}
 */
void q_sort(int numbers[],int left,int right)
{
 int pivot,l_hold,r_hold;
 l_hold=left;
 r_hold=right;
 pivot=numbers[left];
 while(left<right)
 {
 while((numbers[right]>=pivot)&&(left<right))
 right--;
 if(left!= right)
 {
 numbers[left]=numbers[right];
 left++;
 }
 while((numbers[left]<=pivot)&&(left<right))
 {
 left++;
 }
 if (left!=right)
 {
 numbers[right]=numbers[left];
 right--;
 }
 }
 numbers[left]=pivot;
 pivot=left;
 left=l_hold;
 right=r_hold;
 if(left<pivot)
 q_sort(numbers,left,pivot-1);
 if(right>pivot)
 q_sort(numbers,pivot+1,right);
 }

Hasil

ScreenHunter_200 Feb. 22 16.28

Program C++ Pengurutan (Sorting) dengan Metode Shell Sort


Script

/*Shell sort*/
#include <iostream.h>
#include <conio.h>
int main (void)
{
 int array[5];
 int length=5;
 int i,d;
 int tmp, flag;
for (i=0;i<length;i++)
 {
 cout<<"Enter a number :";
 cin>>array[i];
 }
d=length;
 flag=i;

 while(flag||(d>1))
 {
 flag=0;
 d=(d+1)/2;
 for(i=0;i<(length-d);i++)
 {
 if(array [i+d]>array[i])
 {
 tmp=array[i+d];
 array[i+d]=array[i];
 array[i]=tmp;
 flag=1;
 }
 }
 }
for(i=0;i<5;i++)
 {
 cout<<array[i]<<endl;
 }
 getche();
}

Hasil

ScreenHunter_198 Feb. 22 16.20

Program C++ Pengurutan (Sorting) dengan Metode Selection Sort


Script

/*selection Sort*/
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
int selectionsort (int array[], const int size)
 {
 int i, j, kecil, temp;
 for (i=0; i<size; i++)
 {
 kecil=i;
 for (j=i; j<size; j++)
 {
 if (array[kecil]>array[j])
 {kecil = j;}
 }
 temp = array [i];
 array[i] = array[kecil];
 array[kecil] = temp;
 
 }
 }

int main()
{
 int NumList[8] = {5, 34, 32, 25, 75, 42, 22, 2};
 int temp;
 cout<<"Data sebelum diurutkan: \n";
 for (int d=0; d<8; d++)
 {
 cout<<setw(3)<<NumList[d];
 }
 
 cout<<"\n\n";
 selectionsort(NumList,8);
 
 cout<<"Data setelah diurutkan:\n";
 for (int iii=0; iii<8; iii++)
 cout<<setw(3)<<NumList[iii]<<endl<<endl;
 getche ();
}

Hasil

ScreenHunter_198 Feb. 22 16.16