Finding the Longest Consecutive Sequence in a Sorted Array: A Single Pass Algorithm
To determine the length of the longest consecutive sequence within a non-empty, sorted array 'T' containing 'N' integers, follow these steps:
-
Initialization: Create two variables, 'max_length' and 'current_length', both initialized to 1. 'max_length' will store the maximum sequence length encountered, while 'current_length' tracks the length of the sequence currently being examined.
-
Array Traversal: Iterate through the array 'T' starting from the second element (index 1) up to the last element (index N-1).
-
Comparison and Update: For each element at index 'i', compare it with the element at index 'i-1'.
- If T[i] >= T[i-1], the sequence continues. Increment 'current_length' by 1.
- If T[i] < T[i-1], the current sequence has ended. Compare 'current_length' with 'max_length'. If 'current_length' is greater, update 'max_length'. Reset 'current_length' to 1.
-
Final Check: After traversing the entire array, compare 'current_length' with 'max_length' once more. Update 'max_length' if needed.
-
Result: The value stored in 'max_length' represents the length of the longest consecutive sequence in array 'T'.
Here's a C implementation of the algorithm:
#include<stdio.h>
int main() {
int T[] = {1, 2, 3, 5, 5, 6, 6, 6, 7, 8, 8, 9}; // Sample sorted array T
int N = sizeof(T) / sizeof(T[0]); // Calculate the size of the array
int max_length = 1;
int current_length = 1;
for (int i = 1; i < N; i++) {
if (T[i] >= T[i - 1]) {
current_length++;
} else {
if (current_length > max_length) {
max_length = current_length;
}
current_length = 1;
}
}
if (current_length > max_length) {
max_length = current_length;
}
printf('Length of the largest consecutive sequence: %d\n', max_length);
return 0;
}
This example uses a sample array 'T'. Feel free to modify the array with your own data to test the code.
原文地址: https://www.cveoy.top/t/topic/RzL 著作权归作者所有。请勿转载和采集!