【蓝桥杯JavaB组真题详解】三部排序(2013)

2023-10-27

题目描述

三部排序
一般的排序有许多经典算法,如快速排序、希尔排序等。

但实际应用时,经常会或多或少有一些特殊的要求。我们没必要套用那些经典算法,可以根据实际情况建立更好的解法。

比如,对一个整型数组中的数字进行分类排序:

使得负数都靠左端,正数都靠右端,0在中部。注意问题的特点是:负数区域和正数区域内并不要求有序。可以利用这个特点通过1次线性扫描就结束战斗!!

以下的程序实现了该目标。

static void sort(int[] x)
{
    int p = 0;
    int left = 0;
    int right = x.length-1;
    
    while(p<=right){
        if(x[p]<0){
            int t = x[left];
            x[left] = x[p];
            x[p] = t;
            left++;
            p++;
        }
        else if(x[p]>0){
            int t = x[right];
            x[right] = x[p];
            x[p] = t;
            right--;            
        }
        else{
            _________________________;  //代码填空位置
        }
    }
}
   如果给定数组:
   25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0
   则排序后为:
   -3,-2,-16,-5,0,0,0,21,19,33,25,16,18,25

请分析代码逻辑,并推测划线处的代码,通过网页提交
注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字!!

解题思路

小于0的数在左边,x[p]<0时将x[p]移到了左边,
大于0的数在右边,x[p]>0时将x[p]移到了右边,
那么等于0的数要在中间,那就不需要移动,只需要改变指针,因为左右指针指向的分别是正负数,很明显不用移动左右指针,那么只要改变p指针,那么只能使p++,接下来便是验证下是否正确
初始状态
25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0
p=0,left=0 ,right = 13
循环一次
0,18,-2,0,16,-5,33,21,0,19,-16,25,-3,25
p=0,left=0 ,right = 12
循环两次
0,18,-2,0,16,-5,33,21,0,19,-16,25,-3,25
p=1,left=0 ,right = 12
循环三次
0,-3,-2,0,16,-5,33,21,0,19,-16,25,18,25
p=1,left=0 ,right = 11
循环四次
-3,0,-2,0,16,-5,33,21,0,19,-16,25,18,25
p=1,left=1 ,right = 11
循环五次
-3,0,-2,0,16,-5,33,21,0,19,-16,25,18,25
p=2,left=1 ,right = 11
循环六次
-3,-2,0,0,16,-5,33,21,0,19,-16,25,18,25
p=2,left=2 ,right = 11
很明显实现了负数左端,正数右端,0在中间的功能
…直至p>right结束

参考代码

因此答案为

p++

(友情提示:答题时不要加多余“;”!!!)

新手创作学习,有错误欢迎指点,谢谢!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【蓝桥杯JavaB组真题详解】三部排序(2013) 的相关文章

随机推荐

  • Lora模块的定向传输

    原子哥的 两个LORA模块工作在一般模式定向传输数据的测试方法 使用上位机测试 OpenEdv 开源电子网 1 准备两LORA模块和两USB转TTL电路 2 ATK LORA 01配置软件 模块A占用COM10 模块B占用COM22 端口号
  • vue3实现mapbox鼠标定位显示经纬度

    vue3实现鼠标定位显示经纬度 leafletMap on mousemove function e var location leafletMap queryRenderedFeatures e point document getEle
  • c#基础知识---匿名方法

    我们已经提到过 委托是用于引用与其具有相同标签的方法 换句话说 您可以使用委托对象调用可由委托引用的方法 匿名方法 Anonymous methods 提供了一种传递代码块作为委托参数的技术 匿名方法是没有名称只有主体的方法 在匿名方法中您
  • Linux学习笔记——Linux命令行使用技巧

    目录 一 前言 二 Linux是什么 三 关于shell的使用 1 shell命令行提示符 2 shell打开方式 1 右键打开 此方式打开的shell在当前用户的桌面上 2 Application gt System tools gt t
  • Linux系统命令 - 查看内存使用情况

    一 查看内存使用情况 在Linux系统中 大部分操作都通过命令行来完成 因为大部分情况下不开启图形界面 在服务器环境 则只能通过shell执行操作 下面介绍查看内存使用情况的相关命令 包括物理内存 RAM 和交换内存 swap 我们经常需要
  • 前端面试总结之CSS

    文章目录 1 BFC 块级格式化上下文 重点关注 2 CSS盒子模型 3 清除浮动 4 隐藏元素的方法及各自的特点 5 line height和heigh区别 6 用CSS画三角形 7 圣杯布局 三栏布局方式两边固定中间自适应 与双飞翼布局
  • CGAL几何库配置教程

    1 下载源码 进入CGAL官网 下载源码压缩包 GMP库和MPFR库 图1 官方配置教程如图2所示 可供参考 图2 要下载的文件如图3所示
  • 机器学习之决策树

    http t csdn cn 2sWSP决策树 http t csdn cn NdlCs next and iter 函数 http t csdn cn tRN4I sort values and value counts 函数 http
  • Python往excel表格里面插入图片并控制图片的大小

    coding UTF 8 import xlrd import xlwt import requests import json import xlsxwriter from xlutils copy import copy import
  • 【课程设计】数据库:火车票管理系统

    课程设计 数据库 火车票管理系统 摘要 本文主要介绍了火车票管理系统 其中包括其选题功能概述 对该系统的方案方法设计 以及过程实现等内容 由于系统的代码量较大 因此将会较为抽象地对思想进行介绍 在必要时会举出一些实例 还会附上成果展示以及安
  • 线程池创建类ThreadPoolExecutor介绍

    ThreadPoolExecutor 使用给定的初始参数和默认线程工厂和拒绝的执行处理程序创建一个新的线程池执行器 一 构造方法参数说明 有四个构造方法 最终都是调用构造方法四 构造方法参数说明 param corePoolSize 保留在
  • APK反编译

    一 需要的工具 apktool 反编译APK文件 得到classes dex文件 同时也能获取到资源文件以及布局文件 下载地址 dex2jar 将反编译后的classes dex文件转化为 jar文件 下载地址 jd gui 用于查看 ja
  • 嵌入式C语言总结

    GCC知识梳理 Q GCC是什么 GCC最初名称 GNU C Compiler 随着其支持的语言越来越多 改称为 GNU Compiler Collection 作用 将编程高级语言翻译为机器语言 Q C语言变成机器指令的过程 gcc 根据
  • web开发-高德地图api2.0-点聚合-包含设置非聚合点的事件绑定以及样式

    web开发 高德地图api2 0 点聚合 包含设置非聚合点的事件绑定以及样式 下面展示一些 内联代码片 非聚合点数据 lnglat里的坐标不一定要双引号 var points weight 8 lnglat 108 939621 34 34
  • Monitoring(监控)

    Monitoring and Instrumentation 有几种方法可以监控Spark应用程序 Web UI 指标和外部检测 Web Interfaces 默认情况下 每个SparkContext都会在端口4040上启动Web UI 以
  • P2661 信息传递(tarjan求强连通分量模板题)

    minn为最小强连通分量的点数 include
  • 企业微信PC版应用跳转到默认浏览器,避坑指南,欢迎补充。。。

    文章目录 引子 坑一 写代码 前端页面 后端代码 企业微信设置 坑二 网页授权及JS SDK 坑三 配置企业可信IP 最后 引子 我们公司内部用企业微信沟通 最近有个需求 一个应用在企业微信PC版打开时 要自动跳转到PC的默认浏览器 在开发
  • Java 奇偶分离

    public class MiddleHalf public static void main String args int nums 1 4 3 5 0 3 10 int result sortArrayByParity nums fo
  • C++ · 冒泡排序与选择排序

    九月份的第一篇文章 好久没更新了 想起上一次更新还是在上一次 那今天咱们来聊一聊C 中的冒泡排序与选择排序 冒泡排序 排序原理与思想 依次比较相邻的两个数 把大的放前面 小的放后面 即首先比较第1个数和第2个数 大数放前 小数放后 然后比较
  • 【蓝桥杯JavaB组真题详解】三部排序(2013)

    题目描述 三部排序 一般的排序有许多经典算法 如快速排序 希尔排序等 但实际应用时 经常会或多或少有一些特殊的要求 我们没必要套用那些经典算法 可以根据实际情况建立更好的解法 比如 对一个整型数组中的数字进行分类排序 使得负数都靠左端 正数