双向冒泡法,可以只求最大最小值

2024-05-06 08:28

本文主要是介绍双向冒泡法,可以只求最大最小值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

int BiBubbleSort(int Arr[],int n,int maxnum){int left=0,right=n-1;int i;bool notDone= true;int temp;if(n<2)return -1;while(left<=right&&notDone){        notDone= false; //设置未发生交换标志 for(i=left;i<right;i++){if(Arr[i]>Arr[i+1]){//swap(Arr[i],Arr[i+1]);temp=Arr[i];Arr[i]=Arr[i+1];Arr[i+1]=temp;notDone= true;//}}right--;//右边界增加一个最大值for(i=right-1;i>=left;i--){if(Arr[i]>Arr[i+1]){//swap(Arr[i],Arr[i+1]);temp=Arr[i];Arr[i]=Arr[i+1];Arr[i+1]=temp;notDone= true;}}left++;//左边界增加一个最小值if(maxnum>0){maxnum--;if(maxnum==0)return 0;}}return 1;//ok
}

 运行一次获取最大最小值

全部排序运行

这篇关于双向冒泡法,可以只求最大最小值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/963883

相关文章

关于修改计算机的处理器数和最大内存数的问题

问题描述: 刚开始本来是想让计算机的运行速度运行的快点,于是在网上搜索如何让计算机的运行速度更快,找到了一种关于修改计算机内存数和计算机的处理核数可以让计算机运行的更快。 遇到问题: 当我通过命令msconfig →引导→高级选项→勾选了处理器数和最大内存数,然后重启,结构整个计算机都卡的要死,于是记录下来。网上的答案有时候真的是很不负责任,也有可能是自己技术不到位。 结果:取消处理器和内

LeetCode 算法:二叉树的最大深度 c++

原题链接🔗:二叉树的最大深度 难度:简单⭐️ 题目 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:3 示例 2: 输入:root = [1,null,2] 输出:2 提示: 树中节点的数量在 [0, 104] 区间内。-1

「LeetCode 084」最大面积

题目地址: https://leetcode-cn.com/problems/largest-rectangle-in-histogram/ 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。 example 第一种方法,我们先确定左右两个边界,然后找边界中的最小值。比方说,我们左边界确定

最大子数组问题(第4章:分治策略)

求子数组的最大和 题目描述: 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2, 因此输出为该子数组的和18。   思路 1 当我们加上一个正数时,和会

代码随想录算法训练营day62 | 42. 接雨水、84.柱状图中最大的矩形

42. 接雨水 暴力解法 遍历每根柱子(第一个和最后一个不需要遍历,因为不可能存住水),找到当前柱子的左边最高柱子lHeight,右边最高柱子rHeight,当前柱子能存的水为min(min(lHeight, rHeight) - 当前柱子的高度, 0) class Solution:def trap(self, height: List[int]) -> int:result = 0for

力扣907.子数组的最小值之和

力扣907.子数组的最小值之和 考虑每个数对答案的贡献 对于每个元素 找到左边界(严格小于) 右边界(小于等于) 这样出现重复元素也不会重复计算答案对于答案贡献为 arr[i] * (i - l) * (r - i) class Solution {const int MOD = 1e9+7;public:int sumSubarrayMins(vector<int>& arr) {in

嵌入式学习——数据结构(双向无头有环链表、内核链表、栈)——day48

1. 约瑟夫环问题——双向无头回环链表 1.1 问题描述         给定 ( n ) 个人(编号为 ( 1, 2, \ldots, n )),他们围成一个圈。从第一个人开始报数,每报到第 ( k ) 个人时,杀掉这个人,然后从下一个人重新开始报数。重复这个过程,直到所有人都被杀死。约瑟夫环问题是要确定最后一个幸存者的编号。 1.2 实质         每次删除循环链表中的一个节点,

素数伴侣--最大二分匹配

#include<bits/stdc++.h>using namespace std;#define N 100int edge[N][N],cx[N],cy[N];//edge记录两点的关系,如果两点相连,则edge【i】【j】为1int visited[N];//判断该店是否被访问过int nx,ny,res;const int M=60000+100;bool prim[M];

checkbox 复选框 冒泡事件

1.问题描述:点击checkbox 会触发父元素的事件,使用@click.stop无效 解决办法:多加一层div,在div上使用@click.stop 2.小程序的checkbox点击时会冒泡,触发父元素的事件 解决办法:给checkbox绑定一个catchtap,指向空事件,阻止事件冒泡,如:catchtap=“checkEvent”,checkEvent定义一个空事件 3.常见的事件修

2769. 找出最大的可达成数字

2769. 找出最大的可达成数字 题目链接:2769. 找出最大的可达成数字 代码如下: class Solution {public:int theMaximumAchievableX(int num, int t) {return num+2*t; }};