21xrx.com
2024-12-27 21:28:22 Friday
登录
文章检索 我的文章 写文章
"C++实现顺序查找排序和折半查找排序"
2023-07-07 04:00:23 深夜i     --     --
C++ 顺序查找 折半查找 排序 实现

随着计算机科学领域的不断发展,算法和数据结构也随之不断涌现。而常见的算法之一就是查找排序算法。C++作为一种高级编程语言,自然也提供了这两种常见的查找排序算法——顺序查找排序和折半查找排序。

顺序查找排序算法是一种非常简单的搜索算法。该算法通过遍历序列中的每一个元素,从而找到所需的元素。现在我们来看一段代码,用C++实现顺序查找排序:


#include <iostream>

using namespace std;

int linearSearch(int arr[], int n, int x) {

 for (int i = 0; i < n; i++) {

  if (arr[i] == x) return i;

 }

 return -1;

}

int main() {

 int arr[] = 50 ;

 int n = sizeof(arr) / sizeof(arr[0]);

 int x = 30;

 int result = linearSearch(arr, n, x);

 if (result == -1)

  cout << "Element is not present in array" << endl;

  else

  cout << "Element is present at index " << result << endl;

 

 return 0;

}

在这个例子中,我们定义了一个数组arr,并在其中插入了一些数字。我们接着定义了一个整数x,它是我们想要查找的数字。接着,我们调用linearSearch函数,并向它传递数组的长度、数组的实际大小以及要查找的数字。在函数中,我们使用一个for循环来遍历整个数组,并检查每个元素是否与要查找的数字相等。如果我们找到了这个数字,我们就立即退出循环并返回该数字的下标。否则,当循环结束时,我们返回一个-1,表示这个数字没有出现在数组中。

接下来,我们来看看另一个常见的排序算法——折半查找排序。这种算法也被称为二分查找,它在查找排序中是一种非常有效的算法。

与顺序查找排序算法不同,折半查找排序算法不能单纯依靠遍历整个序列来查找元素。相反,它需要更加聪明地查找序列。与其遍历每个元素,折半查找排序算法通过将序列对半分来逐步缩小搜索范围,从而更快地找到所需的元素。现在我们来看一段代码,用C++实现折半查找排序:


#include <iostream>

using namespace std;

int binarySearch(int arr[], int l, int r, int x) {

 if (r >= l) {

  int mid = l + (r - l) / 2;

  if (arr[mid] == x) return mid;

  if (arr[mid] > x) return binarySearch(arr, l, mid - 1, x);

  return binarySearch(arr, mid + 1, r, x);

 }

 return -1;

}

int main() {

 int arr[] = 20;

 int n = sizeof(arr) / sizeof(arr[0]);

 int x = 30;

 int result = binarySearch(arr, 0, n - 1, x);

 (result == -1)

  ? cout << "Element is not present in array"

  : cout << "Element is present at index " << result;

 return 0;

}

在这个例子中,我们采用了递归的方式,来实现折半查找排序。我们定义了一个函数binarySearch,并向该函数传递数组、左边的索引、右边的索引以及要查找的数字。在函数内部,我们在数组的中间找到一个索引,并将数组分成两部分。如果中间的元素是我们要查找的数字,则返回它的索引。否则,如果中间元素大于要查找的数字,我们就递归查找数组左部分。如果中间元素小于要查找的数字,我们就递归查找数组右部分。当我们找完整个数组时,如果仍然没有找到所需的元素,我们就返回-1,表示该元素没有出现在数组中。

总的来说,C++语言提供了许多查找排序算法,包括顺序查找排序和折半查找排序。了解这些算法可以帮助开发人员更加有效地编写程序,并节省时间和资源。当应用于正确的情况和数据集时,这些算法可以使代码更加高效,从而增加程序的可伸展性和可维护性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复