Tuesday, December 18, 2018

Sorting and Searching

SORTING
fungi sorting dalam bahasa C adlah untuk meng-sort atau mengurutkan data dalam suatu variabel.

ada dua tipe sorting yaitu :
- ascending
- descending

Bubble Sort
merupakan proses pengurutan yang secara berangsur-angsur berpindah ke posisi yang tepat karena itulah dinamakan Bubble yang artinya gelembung.
dalam coding:

void Bubble(int *DataArr, int n)
{
    int i, j;
    for(i=1; i<n; i++)
    for(j=n-1; j>=i; j--)
    if(DataArr[j-1] > DataArr[j])
               Swap(&DataArr[j-1],&DataArr[j]);
}
void Bubble(int *DataArr, int n)
{
    int i, j;
    for(i=1; i<n; i++)
    for(j=n-1; j>=i; j--)
    if(DataArr[j-1] > DataArr[j])
               Swap(&DataArr[j-1],&DataArr[j]);
}

Selection Sort
sorting dengan mengurutkan  dan memindahkan data berdasarkan yang terkecil ke terbesar 

Quick sort
mengurutkan data berdasarkan pivot

Merge Sort
mengurutkan data dan memindahkannya dengan membagi-bagi data

SEARCHING
digunakan untuk mencari data dalam bahasa C 

Tipe tipe nya yaitu:
- Binary Search
#include <stdio.h> 
#include <stdlib.h> 
    int main(){ 
    int tabInt[10] = {12,23,29,34,56,60,67,78,84,99}; 
    int i,j,k; 
    int cariData,ketemu; 
    printf("Masukkan data yang dicari = "); 
    scanf("%d",&cariData); 
    i = 0; j = 9;ketemu = 0; 
        while((ketemu == 0) && (i<=j)){ 
            k = (int)(i + j) / 2; 
            if(tabInt[k] == cariData){ 
            ketemu = 1; 
        } 
        else{ 
            if(tabInt[k] > cariData){ 
                j = k - 1; 
            } 
            else{ 
                i = k + 1; 
            } 
        } 
    } 
    if(ketemu==1){ 
        printf("Data %d terdapat pada kumpulan data\n",cariData ); 
    }else{ 
        printf("Data %d tidak terdapat pada kumpulan data\n",cariData ); 
    } 
}
-Linear Search
Proses pencarian Linear Search yaitu pencarian Beruntun yang membandingkan Nilai yang dicari dengan setiap Nilai yang ada di Elemen array secara beruntun pada umum nya ( secara Squence ) 

-Interpolation Search
 pada interpolation search kita akan membagi data menurut rumus sebagai berikut:

Posisi = ( kunci – data[low] / data[high] – data[low] ) * ( high – low ) + low
Contoh Programnya
#include<stdio.h>
int main()
{
  //deklarasi variable
  int A[10], i,j,k,tkr,low,high,pos,tm;
  //proses penginputan data
  for(i=0;i<10;i++)
  {
    printf("data ke-%d:",i+1);
    scanf("%d",&A[i]);
  }
  //Input data yang akan dicari
  printf("Masukkan data yang akan anda cari:");
  scanf("%d",&k);
  //proses pengurutan data
  for(i=0;i<10;i++)
  {
    for(j=i+1;j<10;j++)
    {
        if (A[i]>A[j])
        {
            tkr=A[i];
            A[i]=A[j];
            A[j]=tkr;
        }
    }
  }
  //proses pencarian data
  tm=0;
  high=9;
  low=0;
  do
  {
      pos = ((k - A[low]) / (A[high] - A[low]))*(high-low) + low;
      if (A[pos] == k)
        {
            tm++;
            break;
        }
      if (A[pos] > k)
      high = pos-1;
            else
      if (A[pos] < k)
      low = pos + 1;
  }
  while(k >= A[low] && k <= A[high]);
  if (tm>0)
  {
     printf("data %d yang dicari ada dalam array\n",k);
  }
  //jika tidak ditemukan
  else
  {
     printf("data tidak ditemukan dalam array\n");
  }
 getch();
 return 1;
}

No comments:

Post a Comment