21xrx.com
2024-12-22 23:23:04 Sunday
登录
文章检索 我的文章 写文章
C++经典算法例题:掌握基础,征服挑战!
2023-06-28 15:52:55 深夜i     --     --
C++ 算法 例题 基础 挑战

C++是一门强大的编程语言,在计算机科学领域中应用广泛。C++算法是解决各种问题的关键,因此深入研究和学习C++算法对于程序员来说非常必要。本文将介绍几个经典的C++算法例题,帮助程序员掌握基础,征服挑战!

1.冒泡排序算法

冒泡排序算法是一个基于比较的排序算法,也是最简单的排序算法之一。它重复遍历数组,每次将相邻的两个元素进行比较并交换,直到整个数组有序。C++实现:

void bubbleSort(int arr[], int n) { 

  int i, j; 

  for (i = 0; i < n-1; i++) 

  for (j = 0; j < n-i-1; j++) 

    if (arr[j] > arr[j+1]) 

      swap(&arr[j], &arr[j+1]); } 

2.快速排序算法

快速排序算法是另一个高效的比较排序算法。这种算法首先通过选择一个元素作为基准值,将数组划分为两个部分:小于基准值的部分和大于基准值的部分。继续递归地对这两部分排序。C++实现:

int partition (int arr[], int low, int high) 

  int pivot = arr[high]; // pivot 

  int i = (low - 1); // Index of smaller element 

  for (int j = low; j <= high- 1; j++) 

  { 

    // If current element is smaller than or 

    // equal to pivot 

    if (arr[j] <= pivot) 

    { 

      i++; // increment index of smaller element 

      swap(&arr[i], &arr[j]); 

    } 

  } 

  swap(&arr[i + 1], &arr[high]); 

  return (i + 1); 

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

  if (low < high) 

  { 

    /* pi is partitioning index, arr[p] is now 

      at right place */

    int pi = partition(arr, low, high); 

    // Separately sort elements before 

    // partition and after partition 

    quickSort(arr, low, pi - 1); 

    quickSort(arr, pi + 1, high); 

  } 

3.二分查找算法

二分查找算法是在有序数组上查找元素的经典算法。它的基本原理是在数组中不断缩小查找范围,直到找到指定元素,或者确定元素不存在。C++实现:

int binarySearch(int arr[], int l, int h, int x) 

  if (h >= l) { 

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

    // If the element is present at the middle 

    // itself 

    if (arr[mid] == x) 

      return mid; 

    // If element is smaller than mid, then 

    // it can only be present in left subarray 

    if (arr[mid] > x) 

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

    // Else the element is in right subarray 

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

  } 

  // We reach here when element is not 

  // present in array 

  return -1; 

总结:

以上算法都是比较经典的C++算法,非常有必要学习和掌握。如果您想成为一位优秀的程序员,这些算法是您必须掌握的常规技能,它们对于日常工作还有面试都是非常有帮助的。无论是在考研、ACM竞赛、求职面试还是日常工作中,学好C++算法永远是一箭双雕的选择。

  
  

评论区

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