21xrx.com
2024-09-19 13:46:25 Thursday
登录
文章检索 我的文章 写文章
C++常用算法分享
2023-07-05 04:35:48 深夜i     --     --
C++ 算法 常用 分享 实现

C++是一种高效且广泛应用的编程语言,被广泛用于各种领域的应用开发。C++语言具有简洁、清晰、灵活、高效的特点,并且支持很多常用的算法和数据结构。下面将会分享一些C++常用算法的实现。

1. 快速排序算法

快速排序算法是一种经典的排序算法,具有很好的时间复杂度和稳定性。其实现思路就是:选取一个随机数,将数组划分为两部分,左边的数比随机数小,右边的数比随机数大,然后在分别对左右两边继续进行排序,最后将两部分合并起来即可。具体的C++代码如下:

void quickSort(int* arr, int left, int right){

 if(left >= right) return;

 int pivot = arr[(left+right)/2];

 int l = left, r = right;

 while(l <= r){

  while(arr[l] < pivot) l++;

  while(arr[r] > pivot) r--;

  if(l <= r) swap(arr[l++], arr[r--]);

 }

 quickSort(arr, left, r);

 quickSort(arr, l, right);

}

2. 二分查找算法

二分查找是一种非常基础但非常重要的算法,主要用于在有序数组中查找指定元素。其实现方式是选择数组的中间那个数作为比较对象,如果目标值比中间值小,则在左半部分查找,否则在右半部分查找,以此类推,直至找到目标值或者查找范围缩小到最小。具体的C++代码如下:

int binarySearch(int* arr, int size, int target){

 int left = 0, right = size-1;

 while(left <= right){

  int mid = (left+right)/2;

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

  else if(arr[mid] < target) left = mid+1;

  else right = mid-1;

 }

 return -1;

}

3. 最大子数组和算法

最大子数组和算法是一种经典算法,用于在一个数列中寻找最大的连续子数组和。其实现方式是从数组的第一个位置开始遍历,维护一个当前最大子数组和maxSum和一个当前子数组和curSum。如果curSum加上下一个元素后比下一个元素还要小,那么就舍弃之前的子数组,将当前子数组和修改为下一个元素。具体的C++代码如下:

int maxSubArray(int* arr, int size){

 int maxSum = arr[0], curSum = 0;

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

  curSum += arr[i];

  if(curSum > maxSum) maxSum = curSum;

  if(curSum < 0) curSum = 0;

 }

 return maxSum;

}

以上是三种常用的C++算法的实现,它们都是非常基础而又实用的算法,可以用于解决很多日常开发中的问题。这里仅仅是提供一个基础的实现思路,实际应用中可以根据具体场景进行更加复杂的扩展和优化。

  
  

评论区

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