Tutorial Playlist
132 Lessons1. Introduction to C Tutorial
2. Addition of Two Numbers in C
3. Anagram Program in C
4. Armstrong Number in C
5. Array in C
6. Array of Pointers in C
7. Array of Structure in C
8. C Program to Find ASCII Value of a Character
9. Assignment Operator in C
10. Binary Search in C
11. Binary to Decimal in C
12. Bitwise Operators in C
13. Boolean in C
14. C Compiler for Mac
15. C Compiler for Windows
16. C Function Call Stack
17. C Language Download
18. Operators in C
19. C/C++ Preprocessors
20. C Program for Bubble Sort
21. C Program for Factorial
22. C Program for Prime Numbers
23. C Program for String Palindrome
24. C Program to Reverse a Number
25. Reverse a String in C
26. C string declaration
27. String Input Output Functions in C
28. Calculator Program in C
29. Call by Value and Call by Reference in C
30. Ceil Function in C
31. Coding Vs. Programming
32. Command Line Arguments in C/C++
33. Comments in C
34. Compilation process in C
35. Conditional Statements in C
36. Conditional operator in the C
37. Constant Pointer in C
38. Constants in C
39. Dangling Pointer in C
40. Data Structures in C
41. Data Types in C
42. Debugging C Program
43. Convert Decimal to Binary in C
44. Define And include in C
45. Difference Between Arguments And Parameters
46. Difference Between Compiler and Interpreter
47. Difference Between If Else and Switch
48. Do While Loop In C
49. Double In C
50. Dynamic Array in C
51. Dynamic Memory Allocation in C
52. Enumeration (or enum) in C
53. Evaluation of Arithmetic Expression
54. Factorial of A Number in C
55. Features of C Language
56. Fibonacci Series Program in C Using Recursion
57. File Handling in C
58. For Loop in C
59. Format Specifiers in C
60. Functions in C
61. Function Pointer in C
62. goto statement in C
63. C Hello World Program
64. Header Files in C
65. Heap Sort in C Program
66. Hello World Program in C
67. History of C Language
68. How to compile a C program in Linux
69. How to Find a Leap Year Using C Programming
70. Identifiers in C
71. If Else Statement in C
72. If Statement in C
73. Implementation of Queue Using Linked List
74. Increment and decrement operators in c
75. Input and Output Functions in C
76. How To Install C Language In Mac
77. Jump Statements in C
78. Lcm of Two Numbers in C
79. Length of an Array in C
80. Library Function in C
81. Linked list in C
82. Logical Operators in C
83. Macros in C
84. Matrix multiplication in C
85. Nested if else statement in C
86. Nested Loop in C
87. One Dimensional Array in C
88. Operator Precedence and Associativity in C
89. Overflow And Underflow in C
90. Palindrome Program in C
91. Pattern Programs in C
92. Pointer to Pointer in C
93. Pointers in C: A Comprehensive Tutorial
94. Pre-increment And Post-increment
95. Prime Number Program in C
96. Program for Linear Search in C
Now Reading
97. Pseudo-Code In C
98. Random Access Files in C
99. Random Number Generator in C
100. Recursion in C
101. Relational Operators in C
102. Simple interest program in C
103. Square Root in C
104. Stack in C
105. Stack Using Linked List in C
106. Static function in C
107. Stdio.h in C
108. Storage Classes in C
109. strcat() in C
110. Strcmp in C
111. Strcpy in C
112. String Comparison in C
113. String Functions in C
114. String Length in C
115. String Pointer in C
116. strlen() in C
117. Structures in C
118. Structure of C Program
119. Switch Case in C
120. C Ternary Operator
121. Tokens in C
122. Toupper Function in C
123. Transpose of a Matrix in C
124. Two Dimensional Array in C
125. Type Casting in C
126. Types of Error in C
127. Unary Operator in C
128. Use of C Language
129. User Defined Functions in C
130. What is Variables in C
131. Is C language case sensitive
132. Fibonacci Series in C
The linear search algorithm is a simple and direct way to look for a specific element inside an array. Each element in the array is successively checked until a match is discovered or the array's end. Beginning with the initial element, the algorithm compares it to the element that is being sought after. The algorithm returns the element's index if a match is discovered. If not, it advances to the following element and makes another comparison. This process continues until a match is made or the array's end is reached. The algorithm shows that the element is absent if the end of the array is reached without a match.
Since linear search has an O(n) time complexity, where n is the array size, it is appropriate for small-sized arrays or unsorted data. Other algorithms like binary search or hash-based approaches are typically favored for bigger arrays or more effective searches.
A list or array is systematically checked using the linear search method until the requested entry is located or the entire list has been scanned. A brute-force search algorithm is another term for it. Following is a list of the steps required to complete a linear search:
Let's consider an example to illustrate how linear search works. Suppose we have an array of numbers: [5, 9, 3, 7, 2]. We want to search for element 7 using linear search.
This is how linear search works. It is a straightforward algorithm but may not be efficient for large lists as it requires traversing each element individually.
Here's an example of a C program that performs a linear search using a function:
#include <stdio.h>
int linear search(int arr[], int n, int target) {
// Traverse the array
for (int i = 0; i < n; i ) {
// If the target element is found, return its index
if (arr[i] == target) {
return I;
}
}
// If the target element is not found, return -1
return -1;
}
int main() {
int arr[] = {5, 9, 3, 7, 2};
int size = sizeof(arr) / sizeof(arr[0]);
int target = 7;
// Perform linear search
int result = linearSearch(arr, size, target);
if (result == -1) {
printf("Element not found\n");
} else {
printf("Element found at index %d\n", result);
}
return 0;
}
In this program, we define a function linearSearch that takes three arguments: the array to search (arr), the size of the array (n), and the target element to search for (target). The function returns the index of the target element if found or -1 if not found.
In the main function, we declare an array arr, determine its size, and specify the target element we want to search for (target = 7 in this example).
We then call the linearSearch function, passing in the array, size, and target element as arguments. The returned result is stored in the result variable.
Finally, we check the value of the result and print the appropriate message based on whether the element was found or not.
When you run this program, it will output the following:
An element found at index 3
This indicates that the target element 7 was found at index 3 in the array.
Here's an example of a C program that performs a linear search using a function with pointers:
#include <stdio.h>
int linear search(int *arr, int size, int target) {
// Traverse the array
for (int i = 0; i < size; i ) {
// If the target element is found, return its index
if (*arr == target) {
return I;
}
arr; // Move the pointer to the next element
}
// If the target element is not found, return -1
return -1;
}
int main() {
int arr[] = {5, 9, 3, 7, 2};
int size = sizeof(arr) / sizeof(arr[0]);
int target = 7;
// Perform linear search
int result = linear search(arr, size, target);
if (result == -1) {
printf("Element not found\n");
} else {
printf("Element found at index %d\n", result);
}
return 0;
}
The complexity analysis of an algorithm helps us understand how its performance scales with the size of the input. Let's analyze the complexity of the linear search algorithm:
In the worst-case scenario, the element being searched for is not present in the array, and we need to traverse the entire array to determine this. In the best-case scenario, the element is found at the first position in the array. The average case lies somewhere in between.
The linear search algorithm has a linear time complexity since the number of comparisons scales linearly with the size of the input array.
The space complexity of the linear search is O(1) because it does not require any additional space that grows with the size of the input. It uses constant space to store the variables for the loop iteration and the target element.
The advantages of linear search include:
Linear search also has some drawbacks, which include:
linear search is a simple and versatile algorithm for searching elements in a data structure. It sequentially compares each element in the structure until the target element is found or the end of the structure is reached.
Therefore, when performance is crucial or dealing with larger or sorted data sets, alternative search algorithms with better time complexities, such as binary search or hash-based search, should be considered.
Ultimately, the choice of a search algorithm depends on the specific requirements, data characteristics, and trade-offs between simplicity and efficiency. Assessing the context and selecting the most suitable algorithm is essential.
1. How does a linear search algorithm work in C?
Linear search sequentially checks each element in a list/array until the target is found or the end is reached.
2. What is the time complexity of linear search in C?
The time complexity of linear search is O(n), where n is the number of elements in the list/array.
3. How can I implement a linear search program in C?
Implement a loop to iterate through each element, comparing it with the target until a match is found.
4. What is the advantage of using pointers in a linear search program in C?
Pointers can be used to traverse the list/array efficiently without copying elements, saving memory and improving performance.
PAVAN VADAPALLI
Director of Engineering
Director of Engineering @ upGrad. Motivated to leverage technology to solve problems. Seasoned leader for startups and fast moving orgs. Working …Read More
Popular
Talk to our experts. We’re available 24/7.
Indian Nationals
1800 210 2020
Foreign Nationals
+918045604032
upGrad does not grant credit; credits are granted, accepted or transferred at the sole discretion of the relevant educational institution offering the diploma or degree. We advise you to enquire further regarding the suitability of this program for your academic, professional requirements and job prospects before enrolling. upGrad does not make any representations regarding the recognition or equivalence of the credits or credentials awarded, unless otherwise expressly stated. Success depends on individual qualifications, experience, and efforts in seeking employment.
upGrad does not grant credit; credits are granted, accepted or transferred at the sole discretion of the relevant educational institution offering the diploma or degree. We advise you to enquire further regarding the suitability of this program for your academic, professional requirements and job prospects before enr...