21xrx.com
2024-12-22 22:26:32 Sunday
登录
文章检索 我的文章 写文章
C++ 经典算法代码集锦
2023-07-04 18:34:49 深夜i     --     --
C++ 算法 代码 经典 集锦

C++作为计算机编程的重要语言之一,拥有广泛的应用场景。在算法领域,C++也是应用最为广泛的语言之一。经典算法对于学习和掌握C++编程语言至关重要。下面是 C++ 经典算法代码集锦,供大家阅读和学习。

1. 快排算法

快排算法是C++中常用的排序算法之一,它采用分治策略,将数据分解为小数据集,然后在进行排序后再合并。以下是C ++中的快速排序算法示例:


void quickSort(int arr[], int low, int high) {

  int i = low, j = high;

  int temp;

  int pivot = arr[(low + high) / 2];

  while (i <= j) {

    while (arr[i] < pivot)

      i++;

    while (arr[j] > pivot)

      j--;

    if (i <= j) {

      temp = arr[i];

      arr[i] = arr[j];

      arr[j] = temp;

      i++;

      j--;

    }

  }

  if (low < j)

    quickSort(arr, low, j);

  if (i < high)

    quickSort(arr, i, high);

}

2. 二分查找算法

二分查找算法是C++中常见的搜索算法之一,它非常有效,可以在 O(log n)时间内查找所需的元素。以下是二分查找算法的C ++实现方法:


int binarySearch(int arr[], int left, int right, int x) {

  if (right >= left) {

    int mid = left + (right - left) / 2;

    if (arr[mid] == x)

      return mid;

    if (arr[mid] > x)

      return binarySearch(arr, left, mid - 1, x);

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

  }

  return -1;

}

3. 枚举算法

枚举算法也是C++中的一种常见算法。枚举算法的原理是枚举可能的情况,并找到最好的解决方案。以下是C ++中使用枚举算法的示例:


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

  for (int j = i + 1; j < n; j++) {

    if (arr[i] + arr[j] == targetSum) {

      cout << "Pair with given sum " << targetSum << " is (" << arr[i] << ", " << arr[j] << ")" << endl;

    }

  }

}

4. KMP算法

KMP算法(Knuth-Morris-Pratt算法)是一个字符串匹配算法,可用于C ++中的字符串查找操作。以下是C ++中的KMP算法实例:


void KMPSearch(string pat, string txt) {

  int M = pat.length();

  int N = txt.length();

  int lps[M];

  computeLPSArray(pat, M, lps);

  int i = 0;

  int j = 0;

  while (i < N) {

    if (pat[j] == txt[i]) {

      j++;

      i++;

    }

    if (j == M) {

      cout << "Found pattern at index " << i - j << endl;

      j = lps[j - 1];

    } else if (i < N && pat[j] != txt[i]) {

      if (j != 0)

        j = lps[j - 1];

      else

        i = i + 1;

    }

  }

}

总之,以上所述的C++经典算法代码集锦是C++程序员必须要掌握的知识点。通过学习这些经典算法,我们将更好地理解C++编程语言,并提高我们的程序设计技能。

  
  

评论区

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