先决条件:搜索和排序算法
搜索算法旨在检查元素或从使用该元素的任何数据结构中检索元素。根据操作类型,这些算法通常分为两类:
- 顺序搜索:顺序搜索是基本且简单的搜索算法。顺序搜索从列表或数组的开头开始。它顺序遍历列表或数组,并检查列表或数组的每个元素。线性搜索是顺序搜索的一个示例。
线性搜索会逐个检查数组中的每个元素,而不会跳转到任何项目。它搜索数组中的元素,直到找到匹配项。如果找到匹配项,则返回该项目的索引,否则返回-1 。线性搜索算法的最坏情况复杂度是O(N) ,其中N是列表中元素的总数。线性搜索的工作原理:
让我们以线性搜索如何工作的示例来理解。假设在此示例中,任务是在数组中搜索元素x 。为了搜索给定的元素,请从数组的最左边的元素开始,然后将x与数组的每个元素一一比较。如果 x与a元素匹配,它返回索引,否则返回-1 。下图说明了这一点:
- 间隔搜索:这些算法旨在在排序的数据结构中搜索给定元素。这些类型的搜索算法比线性搜索算法有效得多。二进制搜索是间隔搜索的一个示例。
二进制搜索通过将数组分为两半来搜索数组中的给定元素。首先,它找到数组的中间元素,然后将给定元素与数组的中间元素进行比较,如果要搜索的元素小于数组中间的项目,则给定元素只能位于左边子数组,否则它位于正确的子数组中。它反复检查,直到找到该元素。二进制搜索算法的最坏情况复杂度为O(log N) ,二进制搜索的工作原理:
让我们以二进制搜索如何工作的示例来理解。假设在此示例中,我们必须在数组中搜索元素x 。为了搜索给定元素,首先我们找到数组的中间元素,然后将x与数组的中间元素进行比较。如果 x与中间元素匹配,我们重新调整中间索引,如果x大于中间元素,则x只能位于中间元素之后的右半子数组中,因此我们递归右半部分,否则递归thr左半部分。它反复检查,直到找到该元素。下图说明了这一点:
排序算法:排序算法用于将列表或数组的数据按特定顺序排列。它可以是数字顺序,也可以是字典顺序。例如:以下字符列表按其ASCII值的升序排列。即,具有较小的ASCII值的字符将被首先放置比具有更高的ASCII值的字符。冒泡排序,插入排序,选择排序,合并排序,快速排序,堆排序,基数排序等是排序算法的示例。
排序有两种不同的类别。他们是:
- 内部排序:当所有数据都放在内存中时,排序称为内部排序。
- 外部排序:当无法一次将所有需要排序的数据都放置在内存中时,该排序称为“外部排序”。外部排序用于处理大量数据。合并排序及其变体通常用于外部排序。一些外部存储设备(例如硬盘, CD等)用于外部存储设备。
搜索和排序算法之间的区别:
S.No. | Searching Algorithm | Sorting Algorithm |
1. | Searching Algorithms are designed to retrieve an element from any data structure where it is used. | A Sorting Algorithm is used to arranging the data of list or array into some specific order. |
2. | These algorithms are generally classified into two categories i.e. Sequential Search and Interval Search. | There are two different categories in sorting. These are Internal and External Sorting. |
3. | The worst-case time complexity of searching algorithm is O(N). | The worst-case time complexity of many sorting algorithms like Bubble Sort, Insertion Sort, Selection Sort, and Quick Sort is O(N2). |
4. | There is no stable and unstable searching algorithms. | Bubble Sort, Insertion Sort, Merge Sort etc are the stable sorting algorithms whereas Quick Sort, Heap Sort etc are the unstable sorting algorithms. |
5. | The Linear Search and the Binary Search are the examples of Searching Algorithms. | The Bubble Sort, Insertion Sort, Selection Sort, Merge Sort, Quick Sort etc are the examples of Sorting Algorithms. |