c++ - What is wrong with my binary search algorithm? -


i have written binary search following. when try find 10, it's not showing me result. missing??

// binarysearch.cpp : defines entry point console application. 

//

#include "stdafx.h" #include <iostream> using namespace std;  void binarysearch(int arr[],int value); int * insertionshot(int arr[]); int _tmain(int argc, _tchar* argv[]) { int arr[10] = {1,2,3,10,5,9,6,8,7,4}; int value; cin >> value ; static int *ptr;// = new int[10]; ptr = insertionshot(arr); binarysearch(ptr,value); return 0; }  int * insertionshot(int arr[]) { int ar[10]; for(int =0;i < 10; i++) {     ar[i] = arr[i]; }  int arrlength = sizeof(ar)/sizeof(ar[0]); for(int = 1; <= arrlength -1 ;a++) {     int b = a;     while(b > 0 && ar[b] < ar[b-1])     {         int temp;         temp = ar[b-1];         ar[b-1] = ar[b];         ar[b] = temp;         b--;     } } return ar; }  void binarysearch( int a[],int value) { int min,max,middle; min = 0; int ar[10]; for(int =0;i < 10; i++) {     ar[i] = a[i]; } //printf("size of array = %d",sizeof(arr)); max = (sizeof(ar)/sizeof(ar[0]) -1); middle = (min+max)/2;  while(min <= max) {     if(ar[middle] == value)     {       cout << "the value found" << ar[middle];       break;     }     else if(ar[middle] < value)     {         min = middle +1;     }     else if(ar[middle] > value)     {         max = middle-1;     }     middle = (min+max)/2; } } 

finally made work,i think code not have problem.this one

 // binarysearch.cpp : defines entry point console application.  //  #include "stdafx.h" #include <iostream> using namespace std;  void binarysearch(int arr[],int value); int * insertionshot(int arr[],int); int _tmain(int argc, _tchar* argv[]) { int arr[10] = {1,2,3,10,5,9,6,8,7,4}; int * arr1 = new int[10]; for(int = 0;i< sizeof(arr)/sizeof(arr[0]);i++) {     arr1[i] = arr[i];  }  int value; cin >> value ; int *ptr = new int[10]; ptr = insertionshot(arr1,10); // address of sorted array returned. binarysearch(ptr,value); arr1 = 0; ptr =0; delete arr1; delete ptr; return 0; }  int * insertionshot(int arr1[],int n) {  for(int = 1; <= n -1 ;a++) {     int b = a;     while(b > 0 && arr1[b] < arr1[b-1])     {         int temp;         temp = arr1[b-1];         arr1[b-1] = arr1[b];         arr1[b] = temp;         b--;     } } return arr1; }  void binarysearch( int a[],int value) { int min,max,middle; min = 0; int ar[10]; for(int =0;i < 10; i++) {     ar[i] = a[i]; } max = (sizeof(ar)/sizeof(ar[0]) -1); middle = (min+max)/2;  while(min <= max) {     if(ar[middle] == value)     {       cout << "the value found" << ar[middle];       break;     }     else if(ar[middle] < value)     {         min = middle +1;     }     else if(ar[middle] > value)     {         max = middle-1;     }     middle = (min+max)/2; } } 

you're missing important part of binary search: collection search in must sorted.


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -