21xrx.com
2025-03-03 04:10:11 Monday
文章检索 我的文章 写文章
C++经典算法代码实例集
2023-08-13 10:43:51 深夜i     10     0
C++ 经典算法 代码实例 算法实现 编程技巧

C++是一种通用的编程语言,被广泛应用于开发各种类型的应用程序。它结合了面向对象编程和泛型编程的特性,使得开发人员可以更加高效地实现复杂的算法。本文将介绍一些经典的算法,并提供相关的C++代码实例,帮助读者更好地理解和运用这些算法。

1. 冒泡排序 (Bubble Sort)

冒泡排序是一种简单但低效的排序算法。它重复地遍历待排序的元素,每次比较相邻两个元素,并按照定义的顺序交换它们。通过多次遍历,最大或最小的元素逐渐“冒泡”到正确的位置。以下是冒泡排序的C++代码实例:

void bubbleSort(int arr[], int n) {
  for (int i = 0; i < n-1; ++i) {
    for (int j = 0; j < n-i-1; ++j) {
      if (arr[j] > arr[j+1]) {
        int temp = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = temp;
      }
    }
  }
}

2. 快速排序 (Quick Sort)

快速排序是一种高效的排序算法,它基于“分而治之”的思想。快速排序通过选择一个枢纽元素,将数组分割成两部分,并递归地对这两部分进行排序。以下是快速排序的C++代码实例:

int partition(int arr[], int low, int high) {
  int pivot = arr[high];
  int i = (low - 1);
  for (int j = low; j <= high - 1; ++j) {
    if (arr[j] < pivot) {
      ++i;
      int temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
    }
  }
  int temp = arr[i+1];
  arr[i+1] = arr[high];
  arr[high] = temp;
  return (i + 1);
}
void quickSort(int arr[], int low, int high) {
  if (low < high) {
    int pi = partition(arr, low, high);
    quickSort(arr, low, pi - 1);
    quickSort(arr, pi + 1, high);
  }
}

3. 二分查找 (Binary Search)

二分查找是一种高效的搜索算法,用于在已排序的数组中查找指定元素的位置。该算法将待查找的数组分成两半,然后通过比较目标值与中间元素的大小来确定目标值可能存在的位置。以下是二分查找的C++代码实例:

int binarySearch(int arr[], int low, int high, int target) {
  if (high >= low) {
    int mid = low + (high - low) / 2;
    if (arr[mid] == target)
      return mid;
    
    if (arr[mid] > target) {
      return binarySearch(arr, low, mid - 1, target);
    }
    return binarySearch(arr, mid + 1, high, target);
  }
  // 若目标值不存在于数组中,则返回-1
  return -1;
}

本文介绍了一些经典的算法,并提供了相关的C++代码实例,读者可以通过阅读和分析这些代码来更好地理解和应用这些算法。C++的强大和灵活的编程语言特性使得实现这些算法变得更加容易。然而,值得注意的是,算法的效率不仅取决于编程语言本身,还取决于算法的设计和实现。因此,开发人员在使用这些算法时应该根据具体的需求和场景进行相应的优化和改进。

  
  

评论区