Привет, мне было поручено написать простую программу, которой задан массив целых чисел, и определяет режим, который является числом, которое чаще всего встречается в массиве.Поиск режима сортированного массива с использованием поиска в бинах
Подход, который я пытаюсь принять, использует сортировку пузырьков с алгоритмом поиска в бинах, мой уровень знаний находится на начальном этапе, может кто-нибудь мне подскажет?
Где я иду не так, я верю, что оно передаёт правильное значение поиска, чтобы найти его в массиве! Но я, возможно, ошибаюсь, но какая-то помощь была бы очень оценена, спасибо заранее, чтобы те нашли время, чтобы попробовать помочь мне.
#include <iostream>
using namespace std;
const int arrayLength = 10;
int searchVal;
int numGroup[arrayLength];
bool isSorted(int [], int arrayLength);
int binSearch(int [],int arrayLegth,int searchVal);
int main()
{
// Take in num
for (int index = 0; index < arrayLength; index++)
{
cout << "Enter Number: ";
cin >> numGroup[index];
}
// Sort numbers
//var to hold the val being swaped
int swapHolder = 0;
//bubble sort
for (int iSort = 0; iSort < arrayLength; iSort++)
{
for (int jSort = (iSort + 1); jSort <= arrayLength - 1; jSort++)
{
if (numGroup[iSort] > numGroup[jSort])
{
swapHolder = numGroup[iSort];
numGroup[iSort] = numGroup[jSort];
numGroup[jSort] = swapHolder;
}
}
}
//passes the sorted array and the length to the isSorted
isSorted(numGroup, arrayLength);
return 0;
}
bool isSorted(int numGroup[], int arrayLength){
cout << "Final result" << endl;
for (int index = 0; index < arrayLength - 1 ; index++)
{
if (numGroup[index] > numGroup[index + 1])
{
cout << "it's false";
system("pause");
return false;
}
cout << numGroup[index] << endl;
//cout << arrayLength << endl;
}
cout << numGroup[arrayLength - 1] << endl;
//trying to make searchVal
for (int i = 0; i < numGroup[arrayLength - 1]; i++)
{
if (numGroup[i] == numGroup[i])
{
int searchVal = numGroup[i];
}
}
binSearch(numGroup, arrayLength, searchVal);
cout << "It's true ";
system("pause");
return true;
}
int binSearch(int numGroup[], int arrayLength,int searchVal){
int low = 0;
int high = arrayLength - 1;
int mid;
while (low <= high)
{
mid = (low + high)/2;
//search through the array
if (searchVal == numGroup[mid])
{
return mid;
}
else if (searchVal > numGroup[mid])
{
low = mid + 1;
}
else
{
high = mid - 1;
}
}
cout << "In bin search " << mid;
return mid;
}
Вы можете заменить свой BUBLE сортировать по 'станд :: sort'. – Jarod42
Нечего искать. Подсчитайте длину каждой повторяющейся числовой последовательности отсортированного массива, затем найдите самый длинный. – felix
У меня есть склонность к сложным проблемам/задачам, подумайте, что это можно решить более простым/простым способом. – Cerberus