单峰排序

本文介绍了单峰排序的问题,即在给定的单峰序列中寻找峰顶元素的算法。通过分治和二分策略,针对不同情况递归地在序列的左侧或右侧查找峰顶,最终找到或确认不存在峰顶元素的下标。
摘要由CSDN通过智能技术生成

单峰排序

一.实验题目:

1.单峰序列
问题描述
给定含有n个不同整数的数组L=<a1,a2,…,an>,如果L中存在ai,使得a1<a2<…<ai-1ai+1>…>an。则称L是单峰的,并称ai是L的“峰顶”。假设L是单峰的,设计一个算法,找L的峰顶。
输入形式
一共包括两行,第一行一个整数N,表示数组中整数的个数。
接下来的一行中包含N个整数,以空格分隔
输出形式
如果这些整数中存在峰顶元素ai,则输出该元素的下标i,否则输出0
样例输入
9
1 2 5 7 9 8 6 4 3
样例输出
5
另一组样例:
输入:
9
3 5 6 2 9 8 7 4 1
输出:0

二. 分析:

利用分治和二分的算法,取每一个数组的中间值mid,若mid-1<mid<mid+1,则用递归向从mid-right寻找。若mid-1>mid>mid+1,则用递归向从left-mid寻找。若mid-1< mid >mid+1,则假定为正确值,寻找左右数组是否还存在峰值,如没有则正确,若有则不正确。

#include<iostream>

using namespace std;

int Maxnum(int list[], int left, int right){
   

	//如果只有新数组两个元素返回0 
	if(left<
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值