برنامه ای که تابع جستجوی دودویی را به صورت بازگشتی بنویسد
#include "stdafx.h"
#include<iostream> #include<conio.h>
using namespace std;
int A[10], x;
int Partition(int p, int q)
{
int v, i, u;
v=A[p];
i=p;
do
{
do
p++;
while(A[p]<v);
do
q--;
while(A[q]>v);
if(p<q)
{
u=A[p];
A[p]=A[q];
A[q]=u;
}
else
break;
}
while(1);
A[i]=A[q];
A[q]=v;
return q;
}
void QuickSort(int p, int q)
{
int j;
if(p<q)
{
j=Partition(p, q+1);
QuickSort(p, j-1);
QuickSort(j+1, q);
}
}
int BinSearch(int low, int high, int x, int A[])
{
int mid;
if(low>high)
return -1;
else
mid=(low+high)/2;
if(x==A[mid])
return mid;
else if(x<A[mid])
return BinSearch(low, mid-1, x, A);
else
return BinSearch(mid+1, high, x, A);
}
void main()
{
int i, n=10;
printf("\nPlease Enter Array Elements:\n");
for(i=0; i<n; i++)
{
printf("A[%d]: ", i+1);
scanf("%d", &A[i]);
}
QuickSort(0, n-1);
printf("\nThe Array in Sorted Mode:\n");
for(i=0; i<n; i++)
{
printf("A[%d]: %d", i+1, A[i]);
printf("\n");
}
printf("\nPlease Enter a Number for Search: ");
scanf("%d", &x);
int Out=BinSearch(0, n-1, x, A);
if (Out==-1)
printf("The Number(%d) Not Find.", x);
else
printf("The Number Position is: %d", Out+1);
getch();
}
|
نوشته شده در ویژوال استدیو 2010