基于冒泡排序的寻峰代码
时间: 2023-06-28 13:13:40 浏览: 49
冒泡排序是一种较为简单的排序算法,它可以用来寻找一个一维数组中的峰值。
假设我们有一个一维数组arr,它的长度为n。我们可以使用下面的代码来寻找它的峰值。
```
// 冒泡排序寻峰
int findPeak(int arr[], int n) {
for (int i = 0; i < n; i++) {
bool isPeak = true;
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
isPeak = false;
}
}
if (isPeak) {
return arr[n - i - 1];
}
}
return arr[0];
}
```
在这个代码中,我们使用了两层循环。外层循环从0到n-1,内层循环从0到n-i-1。在内层循环中,我们比较相邻的两个元素的大小,如果第一个元素比第二个元素大,则交换它们的位置。如果在一次内层循环中没有发生任何交换操作,则说明数组已经排好序了,而最后一个元素就是数组的峰值。如果外层循环结束后仍然没有找到峰值,则说明整个数组都是递增的,而第一个元素就是数组的峰值。
需要注意的是,冒泡排序的时间复杂度为O(n^2),如果数组长度比较大,则这个算法的效率会比较低。如果需要更高效的寻峰算法,可以考虑使用二分查找。