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;
}