Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions searching/jump_search.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
using namespace std;


/**
* @brief Performs Jump Search on a sorted vector.
*
* @param arr The sorted vector to search in.
* @param target The value to search for.
* @return Index of target if found, else -1.
*/
int jump_search(const vector<int>& arr, int target) {
int n = arr.size();
int step = sqrt(n);
int prev = 0;

while (arr[min(step, n) - 1] < target) {
prev = step;
step += sqrt(n);
if (prev >= n) return -1;
}

for (int i = prev; i < min(step, n); i++) {
if (arr[i] == target) return i;
}

return -1;
}

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please add a tests function, The main function should only contain a call to tests function

int main() {
vector<int> arr = {1, 3, 5, 7, 9, 13, 17, 21};
int target = 13;
int result = jump_search(arr, target);
if (result != -1)
cout << "Found at index: " << result << endl;
else
cout << "Not found" << endl;
return 0;
}