اكتب برنامج بلغة C للعثور على العنصر المحوري في مصفوفة تم فرزها وتدويرها باستخدام البحث الثنائي

  • برمجة
  • برمجة سي c

اكتب برنامج بلغة C للعثور على العنصر المحوري في مصفوفة تم فرزها وتدويرها باستخدام البحث الثنائي

العنصر المحوري هو العنصر الوحيد في إدخال المصفوفة الأصغر من العنصر السابق.

العنصر محوري يقسم مصفوفة مرتبة مستدارة إلى مصفوفتين متزايدتين بشكل مرتب

الخرج المتوقع :

The given array is :  14  23  7  9  3  6  18  22  16  36  
The Pivot Element in the array is : 3

الأجوبة

/*Write a program in C to find the pivot element of a sorted and rotated array using binary search*/

#include <stdio.h>
 
int findPivotElem(int *arr1, int left_elem, int right_elem)
{
   if (right_elem < left_elem)   
       return -1;
   if (right_elem == left_elem) 
       return left_elem;
   int mid_elem = (left_elem + right_elem)/2;
   if (mid_elem < right_elem && arr1[mid_elem] > arr1[mid_elem + 1])
       return mid_elem;
   if (mid_elem > left_elem && arr1[mid_elem] < arr1[mid_elem - 1])
       return mid_elem-1;
   if (arr1[left_elem] >= arr1[mid_elem])
   {
       return findPivotElem(arr1, left_elem, mid_elem-1);
   } else 
   {
       return findPivotElem(arr1, mid_elem + 1, right_elem);
   }
}
int main()
{
    int i;
    int arr1[] = {14, 23, 7, 9, 3, 6, 18, 22, 16, 36};
    int ctr = sizeof(arr1)/sizeof(arr1[0]);
    printf("The given array is :  ");
	for(i = 0; i < ctr; i++)
	{
	printf("%d  ", arr1[i]);
    } 
    printf("\n");
    printf("The Pivot Element in the array is : %d \n", arr1[findPivotElem(arr1, 0, ctr-1) + 1]);
    return 0;
}
هل كان المحتوى مفيد؟

تبحث عن مدرس اونلاين؟

محتاج مساعدة باختيار المدرس الافضل؟ تواصل مع فريقنا الان لمساعدتك بتأمين افضل مدرس
ماهو التخصص الذي تبحث عنه؟
اكتب هنا...