Program Pencarian (Binary Search) Bahasa C

Program pencarian (Binary Search) dengan mencari indeks angka yang ada di dalam array. Pencarian indeks data pada program ini menggunakan binary search, dan syarat untuk mencari angka dengan binary search yaitu data harus terurut maka pengurutan pada program ini menggunakan Quick Sort.

Random data tersedia juga dalam program dan penghitung total waktu yang dibutuhkan dalam random dan quick sort. Program menerima input berupa n yaitu sebuah bilangan dimana 1 < n < 100.000. Dan kemudian mengacak n buah bilangan bulat.

Binary Search C
Program Pencarian (Binary Search) Bahasa C

Program menyediakan MENU dan melakukan hal-hal berikut:
Masukkan jumlah bilangan (n) :
> Random data dalam array selesai
> Urutkan data menggunkan quick sort

> Total penghitung waktu Random & Quick Sort adalah x.xxxxx detik

Pilihan:
1) Mencari data dengan BINARY SEARCH dan menampilkan hasilnya
2) Random ulang data dalam array
3) Selesai

Pilihan Anda : _

Bila pilihan yang dimasukkan yaitu 1 maka user memasukkan sebuah bilangan yang ingin dicari dan kemudian program menampilkan hasilnya, bila data yang dicari ditemukan maka pesan muncul bahwa data ditemukan pada indeks i ditampilkan dilayar monitor. Sebaliknya bila data yang dicari tidak ditemukan maka muncul pesan data tidak ditemukan. Waktu pencarian juga ditampilakan di layar monitor.


Bila pilhan yang dimasukkan yaitu 2 maka program menunggu input kembali n bilangan dan mengacak kembali data sebanyak n ke dalam array.

Bila pilihan yang dimasukkan yaitu 3 maka program selesai.

Source Code Program:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/times.h>

//--- Prototype ---
  void QuickSort(int *, int, int);
   int BinarySearch(int *, int, int);
    int startTiming(void);
     int stopTiming(void);
      float timingDuration(void);

//------- Struct Untuk Function Timing -------
static struct tms _start; 
static struct tms _stop;

//------- Function Quick Sort --------
 void QuickSort(int ArrBil[],int first,int last){
   int pivot,j,temp,i;

   if(first<last){
      pivot=first;
   i=first;
   j=last;

 while(i<j){
   while(ArrBil[i]<=ArrBil[pivot]&&i<last) i++; //too big index
      while(ArrBil[j]>ArrBil[pivot]) j--; //too small index
        if(i<j){ //tukar nilai jika too big index < too small index
         temp=ArrBil[i];
         ArrBil[i]=ArrBil[j];
         ArrBil[j]=temp;
  }
 }

 //--- tukar nilai ---
 temp=ArrBil[pivot];
 ArrBil[pivot]=ArrBil[j];
 ArrBil[j]=temp;
 QuickSort(ArrBil,first,j-1);
 QuickSort(ArrBil,j+1,last);

    }
}

//--------- Function Binary Search ---------
int BinarySearch(int *ArrBil, int bil, int bilCari){
int low=0, high=bil-1, mid;
  while(low<=high){
    mid=(low+high)/2; /*index tengah*/
      if(bilCari<ArrBil[mid]) high=mid-1;
        else if(bilCari>ArrBil[mid]) low=mid+1;
          else return mid; /*nilai ditemukan*/  
     }
 return -1; /*nilai tidak ditemukan*/
}


//-------- Function Timing --------
/* Fungsi Timing Start  */
  int startTiming(void) {
    times(&_start);
    return 1;
  }

/* Fungsi Timing Stop */
int stopTiming(void) {
 times(&_stop);
 return 1;
}

/* Fungsi Menghitung total durasi */
float timingDuration(void) {
    return (_stop.tms_utime - _start.tms_utime);
}


int main(){
  int i, pilihan, bil, *ArrBil, bilCari;
  
printf("\nMasukkan Jumlah Bilangan (n) : ");
  scanf("%d", &bil);

//--- Membatasi nilai inputan ---
if(bil>100000){
while(bil>100000){
  printf("\nJumlah bilangan (n) hanya berada pada 1 < n <= 100000");
    printf("\nMasukkan Jumlah Bilangan (n): ");
      scanf("%d", &bil);
 }
}

ArrBil=(int *) malloc(bil * sizeof(int));
  startTiming(); /*mulai hitung waktu*/ 
  
  //-------- Random data dalam array --------
  for(i=0; i<bil; i++){
    ArrBil[i]=(rand() % bil+1);
  }
  printf("> Random data dalam array selesai\n");

  //--- Urutkan data dengan metode Quick Sort ---
  QuickSort(ArrBil, 0, bil-1);
    stopTiming(); /*stop hitung waktu*/

  printf("> Urutkan data menggunakan quick sort\n");
  printf("\n> Total penghitungan waktu Random & Quick Sort adalah %f detik\n", timingDuration() * 1e-2);  
         
 
  while(pilihan!=3){
    printf("\nPilihan : \n");
      printf("1) Mencari data dengan BINARY SEARCH dan menampilkan hasilnya\n");
 printf("2) Random ulang data dalam array\n");
        printf("3) Selesai\n");
      printf("\n  Pilihan anda : ");
    scanf("%d", &pilihan);
  getchar();
  
 switch(pilihan){   
  case 1 :    
   printf("\n\t.:: Binary Search ::.\n");
   printf("Masukkan bilangan yang ingin di cari : ");
   scanf("%d", &bilCari);
   startTiming(); /*mulai hitung waktu*/  

   //--------- Binary Search ---------
   int BS=BinarySearch(&ArrBil[0], bil, bilCari);
   
   if(BS==-1){ /*cek nilai yang di return */
       printf("-=( Nilai %d yang dicari tidak ditemukan )=-\n", bilCari);
   }else 
       printf("-=( Nilai %d yang dicari ditemukan pada indeks ke-%d )=-\n", bilCari, BS);
   stopTiming(); /*stop hitung waktu*/    
   printf("\nTotal penghitungan waktu Binary Search adalah %f detik\n", timingDuration() * 1e-2);  ; 
   break;

  case 2 :
   printf("\nMasukkan Jumlah Bilangan Baru (n) : ");
   scanf("%d", &bil);
   if(bil>100000){
   while(bil>100000){
     printf("\nJumlah bilangan (n) hanya berada pada 1 < n <= 100000");
       printf("\nMasukkan Jumlah Bilangan BinarySearch (n): ");
         scanf("%d", &bil);
    }
   }
   ArrBil=(int *) malloc(bil * sizeof(int));
     startTiming(); /*mulai hitung waktu*/ 

   //-------- Random data dalam array --------
     for(i=0; i<bil; i++){
       ArrBil[i]=(rand() % bil+1);
     }
     printf("> Random data dalam array selesai\n");

   //--- Urutkan data dengan metode Quick Sort ---
     QuickSort(ArrBil, 0, bil-1);
       stopTiming(); /*stop hitung waktu*/
     printf("> Urutkan data menggunakan quick sort\n");
     printf("\n> Total penghitungan waktu Random & Quick Sort adalah %f detik\n", timingDuration() * 1e-2); 
   break;
 
  case 3 : 
   printf("\n ---== Anda out dari Program ==---\n\n");
   break;

  default : 
   printf("\n ---== Input Salah :: Masukkan pilihan hanya 1 s/d 2 ==---\n");
   break;
  }
 }
   return EXIT_SUCCESS;
}

Demo program:
Run Binary Search C
Run Program Binary Search

Demikian lah pembahasan program pencarian (Binary Search) bahasa C. Silahkan kembangkan program di atas jika masih ada yang kurang. Program tersebut telah saya compile dan berhasil tanpa ada syntak error maupun warning.

Artikel Lainnya:

Perbandingan Windows 8 Dengan Windows 7 Lebih Bagus Mana?

Perbandingan kinerja dan kecepatan, lebih bagus mana antara windows 8 dan windows 7. Artikel ini di kutip dati beberapa sumber di internet. Pasti Anda akan bertanya sebelum menggunakan windows 8, iya pertanyaan tidak jauh beda tentang perbandingan antara windows 8 dan windows 7. Anda akan beralih ke windows 8 atau akan tetap menggunakan windows 7 kesayangan Anda. Untuk itu mari kita ulas sedikit perbedaan lebih bagus mana antara windows 8 dan windows 7, simak di bawah ini:

Windows
Windows 8 VS Windows 7
Kami uji dalam beberapa tahap:
A Broad Range
Untuk mendapatkan hasil yang sebanding, kami menempatkan Windows 8 melalui berbagai tes pada sistem yang sangat berbeda dilengkapi beberapa.

Dua PC desktop: 
Kami menginstal Windows 8 Preview Konsumen pada PC desktop (Core 2 Duo, 2.66 GHz) dari tahun 2007 dan game Alienware rig baru-baru ini (Core i7 930, 8 GB RAM).

Dua laptop / tablet: 
Kami menggunakan i7 bertenaga rendah Inti 1,8 GHz, RAM 4 GB 13" laptop, yang mencakup 256 GB SSD, dan Samsung Seri 7 tablet olahraga Core i5, 4 GB RAM dan 64 GB SSD.

Kami tidak memasang alat pada mesin kecuali untuk aplikasi yang sering saya gunakan untuk pembandingan. Seperti biasa, aku melakukan semua tes tiga kali dan boot analisis waktu diukur, kekuatan pemrosesan mentah, dan kecepatan aplikasi peluncuran. Bagaimana menurut Anda Windows 8 ditumpuk melawan pendahulunya yaitu windows 7?

1 - Boot Time Performance (Windows Logo untuk Desktop)
Pada awal permainan, Microsoft berjanji untuk secara signifikan mengurangi waktu booting di Windows 8. OS baru yang dibutuhkan untuk masuk dan keluar dari "off" dalam detik untuk merasa lebih seperti OS tablet khas atau smartphone. Namun, Windows 7 adalah tidak bungkuk dalam hal itu baik.

Boot test

windows 7

Windows test

Menakjubkan! Bahkan pada mesin yang lebih tua dengan HDD tradisional (Hard Disk Drive), waktu boot turun dari sekitar satu menit untuk 33 detik dengan Windows 8 RTM. Dan pada high-end gaming rig kami (yang masih memiliki HDD, meskipun cukup cepat 10.000 rpm satu), OS boot dalam waktu sekitar tujuh detik - bandingkan dengan 21 detik Windows 7 digunakan untuk mengambil, dan kita melihat jelas pemenang di sini. Hasil pada kedua SSD berbasis sistem portabel tidak mengejutkan kita-kita melihat peningkatan hingga 50% jika dibandingkan dengan Windows 7.

2 - Waktu Startup - Aplikasi
Startup aplikasi membutuhkan HDD untuk membaca potongan file kecil dengan cepat dan CPU untuk memproses banyak informasi secara bersamaan. Saya menguji Outlook menggunakan, karena memerlukan kedua file kecil (file program Outlook) dan potongan file yang lebih besar (OST data file) untuk dibaca dan diproses.

Waktu Startup - Aplikasi outlok

Saya menggunakan AppTimer untuk melihat bagaimana startup aplikasi bernasib pada Core i5 tablet Samsung Seri 5. Saya juga ingin melihat apakah ada perbedaan ketika melakukan "dingin" dan "hangat" startups-"dingin" mengacu pada startup pertama dari aplikasi setelah booting, dan "hangat" mengacu pada peluncuran berikutnya, yang semuanya benar-benar dimuat dari memori dan dengan demikian cepat.

Waktu Startup Aplikasi

Waktu Startup Aplikasi

Hasil? Suatu perubahan dalam kinerja aplikasi adalah hampir tidak terlihat ketika saya benar-benar mulai program, tetapi AppTimer (yang saya gunakan lima kali berturut-turut dan rata-rata hasil) menunjukkan gambar yang berbeda. Windows 8 mampu mengurangi waktu booting secara signifikan jika dibandingkan dengan Windows 7 SP1. Apakah hal ini disebabkan karena perbaikan dalam pengelolaan memori atau controller chipset / HDD lebih maju driver jelas. Apa yang jelas adalah bahwa Windows 8 menunjukkan beberapa perbaikan.

3 - PCMark7 - Office + Hari-ke-Hari Kinerja
Untuk menguji sehari-hari kinerja, saya menggunakan versi terbaru dari PCMark 7 , yang secara otomatis melakukan tugas-tugas seperti render website, scan virus, manipulasi foto dan video editing. Ini harus menunjukkan seberapa baik Windows 8 ini menangani CPU dan hard disk tugas berat.

PCMark7 - Office

PCMark

Office

PCMark7 - Office

Dalam semua empat tes, Windows 8 bernasib lebih baik daripada pendahulunya-on yang kebanyakan mesin-mesin, kinerja meningkat sekitar 10%! Aku akan mengatakan ini adalah cukup sebuah prestasi mengingat bahwa itu hanya kernel, manajemen memori dan driver co-ada yang lebih baik.

4 - Kinerja Gaming
Sekarang bagaimana dengan departemen game? Untuk itu, saya melakukan beberapa benchmark saya diciptakan khusus untuk saya seri game beberapa bulan yang lalu . Microsoft berjanji untuk membuat beberapa perubahan dalam DirectX dan grafis kemampuan Windows 8. Itu, ditambah pengelolaan sumber daya dioptimalkan harus membuktikan menjadi menguntungkan untuk permainan, kan?

Mari kita lihat bagaimana Windows 8 ditumpuk melawan Windows 7 ketika saya melakukan benchmark favorit kami game pada PC Core i7 game.

Kinerja Gaming

Kinerja Gaming

Kinerja Gaming

Kinerja Gaming

Sementara Windows 8 berhasil memeras beberapa FPS tambahan keluar dari sistem ketika Max Payne 3 dan Grand Theft Auto IV berjalan, itu tidak meningkatkan kinerja (bahkan menderita kerugian kinerja sedikit) dengan Diablo 3 dan Surga Unigine. Hal ini mungkin disebabkan oleh 8 driver awal Windows, tapi situasi ini pasti harus meningkatkan dari waktu ke waktu.

5 - Menyalin Berkas
Mari kita memutar kepala kita untuk kecepatan transfer file murni. Untuk itu, kami mengukur kecepatan ketika menyalin folder (100 file, 1 GB) dari partisi C: ke partisi D.

Durasi Copy File Dekstop PC 2007

Durasi Copy File Tablet 2011

Durasi Copy File Ultrabook 2011

Durasi Copy File Gaming PC 2012

Hasilnya: sementara baru Windows Explorer layar copy terlihat lebih profesional (dengan grafik copy mewah) dan memungkinkan Anda untuk jeda / melanjutkan operasi copy, itu hanya sedikit lebih baik - tapi bahkan peningkatan dari satu detik adalah perbaikan, kan?

Secara keseluruhan Putusan Kesimpulan: Perbaikan Baik, Beberapa Kerugian
Windows 8 dilakukan dengan sangat baik pada semua sistem pengujian kami (bahkan yang lebih tua) dan lebih baik dari Windows 7 dalam banyak kasus. Secara keseluruhan, kami telah mengalami peningkatan kinerja hingga 10% solid dan waktu perbaikan booting dari 50%-yang gila.

Sampai Windows 7, kinerja OS baru ini umumnya lebih rendah dibandingkan dengan pendahulunya. The perbandingan Vista / XP datang ke pikiran, dan sama terjadi bahkan kembali dengan Windows 98 dan 95. The set fitur tambahan, set pengemudi dewasa atau tidak stabil dan sering-kali disebut kinerja yang dioptimalkan "perbaikan" telah mengakibatkan kerugian drastis kinerja. Ini, bagaimanapun, tidak demikian halnya dengan Windows 8.

Sebaliknya, OS segera-to-be-dirilis dikelola untuk tidak hanya menjadi secepat Windows 7, tetapi juga melampaui kinerjanya sudah rock-solid di banyak daerah, terutama booting waktu dan CPU dan RAM-intens-operasi. Juga, kondisi driver yang sangat baik-semua OEM utama (Intel, AMD / ATI, nVidia, Broadcom atau Realtek, untuk beberapa nama) memiliki spesifik, dan terakhir) Windows 8 driver sudah siap minggu sebelum rilis resmi.

Sayangnya, masih memiliki satu kelemahan utama yang telah menjangkiti semua Windows versi-itu akan lebih lambat dan lebih lambat dari waktu ke waktu. Mari kita lihat bagaimana "tahan" Windows 8 adalah ketika Anda menggunakannya selama berminggu-minggu dan menginstal puluhan aplikasi dalam posting blog minggu depan. Itulah ulasan yang bisa diberikan, sekarang anda tinggal menentukan pilihan mana yang akan di ambil dan mari kita berbagi pengalaman melalui kolom komentar di bawah ini.

Mudah-mudahan artikel ini bisa menjadi penentu bagaimana anda akan melakukan pilihan yang di ambil, apakah anda akan menggunakan windows 8 atau masih ingin bertahan pakai windows 7 Semua ada di tangan Anda.

Sumber informasi ini dikutip dari web www.windows8kita.com.

Artikel Lainnya: