三部排序|

一般的排序有许多经典算法,如快速排序、希尔排序等。
但实际应用时,经常会或多或少有一些特殊的要求。我们没必要套用那些经典算法,可以根据实际情况建立更好的解法。
比如,对一个整型数组中的数字进行分类排序:
使得负数都靠左端,正数都靠右端,0在中部。注意问题的特点是:负数区域和正数区域内并不要求有序。可以利用这个特点通过1次线性扫描就结束战斗!!
以下的程序实现了该目标。
其中x指向待排序的整型数组,len是数组的长度。

void sort3p(int* x, int len)
{int p = 0;int left = 0;int right = len-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{__________________________;  //填空位置}}}

答案:p++

思路:递归程序,代码填空思路:可以自己选取一段数据,模拟题目中的代码,手算一遍理清思路。

经过分析可以知道,三部排序的思路类似于快速排序的指针划分。大于0的放在数组右端、等于0的在中间、小于0的放在左端。
这里的p表示正在判断的元素指针所处的位置,left就是左端第1个大于0的元素的指针,right就是右端最前1个大于0的指针。

转载于:https://www.cnblogs.com/fisherss/p/10326372.html

三部排序|2013年蓝桥杯B组题解析第六题-fishers相关推荐

  1. 2018第九届蓝桥杯B组决赛题解第六题 矩阵求和

    标题:矩阵求和 经过重重笔试面试的考验,小明成功进入 Macrohard 公司工作. 今天小明的任务是填满这么一张表: 表有 n 行 n 列,行和列的编号都从1算起. 其中第 i 行第 j 个元素的值 ...

  2. 2013第四届蓝桥杯Java组省赛题解析

    2013第四届蓝桥杯Java组省赛题解析 目录 第一题:高斯日记 第二题:马虎的算式 第三题:第39级台阶 第四题:黄金连分数 ​第五题:前缀判断 第六题:三部排序 ​第七题:错误票据 第八题:翻硬币 ...

  3. 2019第十届蓝桥杯A组决赛(国赛)A题(三升序列)

    2019第十届蓝桥杯A组决赛(国赛)A题(三升序列) 输入: VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAG SDLLOVGRTWEYZKKXNK ...

  4. 2013第四届蓝桥杯JavaA组省赛真题详解

    蓝桥杯历年省赛真题汇总及题目详解 蓝桥杯历年决赛试题汇总及试题详解 目录 第一题:世纪末的星期 第二题:振兴中华 第三题:梅森素数 第四题:颠倒的价牌 第五题:三部排序 第六题:逆波兰表达式 第七题: ...

  5. 蓝桥杯B组省赛预赛第一题2013(高斯日记)

    题目标题: 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯 ...

  6. 第四届蓝桥杯JavaB组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.猜灯谜 题目描述 A 村的元宵节灯会上有一迷题: 请猜谜 * 请猜谜 = 请边赏灯边猜 小明想,一定是每个汉字代表一个数字,不同的汉字 ...

  7. 第四届蓝桥杯JavaC组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.好好学习 汤姆跟爷爷来中国旅游.一天,他帮助中国的小朋友贴标语.他负责贴的标语是分别写在四块红纸上的四个大字:"好.好.学. ...

  8. 第六届蓝桥杯JavaC组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.机器人数目 少年宫新近邮购了小机器人配件,共有3类,其中, A类含有:8个轮子,1个传感器 B类含有: 6个轮子,3个传感器 C类含有 ...

  9. 2019第十届蓝桥杯B组C++省赛E题迷宫--BFS(倒搜)

    试题 E: 迷宫 本题总分:15 分 [问题描述] 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方. 010000 000100 001001 110000 迷宫 ...

最新文章

  1. MinGW-w64 编译器下载,安装,以及环境变量配置
  2. linux mysql 二进制包_mysql5.7 二进制包安装
  3. 汇编(8086cpu): AX,BX,CX,DX寄存器
  4. SQLite VC环境搭建
  5. xfce4自己使用的主题设置备份以及xfce4默认的壁纸路径
  6. slf4j注解log报错_SpringBoot自定义日志注解,用于数据库记录操作日志,你用过吗?...
  7. 0.《沉浸式线性代数》:前言
  8. 【职场】高薪的条件你满足几条?
  9. python egg
  10. O(logn)复杂度恐怖之处
  11. android web developer,Growth: 一个关于如何成为优秀Web Developer 的 App
  12. 基于VUE,VUX组件开发的网易新闻页面搭建过程
  13. 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1-2-3-3-4-4-5 处理后为 1-2-5(非常简单明了)
  14. pytorch转onnx: step = 1 is currently not supported以及Exporting the operator silu to ONNX opset version
  15. 更改pip镜像源的多种方法
  16. 基于Serverless的流量隐匿(四个方面)
  17. (简单)SQL练习13:从titles表获取按照title进行分组
  18. STM32F103移植FreeRTOS
  19. lzg_ad:XPE中的Remote Procedure Call (RPC) Locator服务无法启动
  20. SIGIR2020推荐系统论文解析:Recommendation for New Users and New Items

热门文章

  1. 11步教你选择最稳定的MySQL版本
  2. 在windows 2008下不同域活动目录迁移(ADMT3.1)
  3. 如何实现Asp与Asp.Net共享Session
  4. Android ViewPager和Fragment实现顶部导航界面滑动效果
  5. mac ox 10.9 安装eclipse j2ee 集成配置JDK1.6
  6. golang实现生产者和消费者
  7. lsof根据端口查进程
  8. 0122 - EOS 编程学习日志(1)
  9. 灯的开关 Bulb Switcher II
  10. 如何区分Android wrap_content和fill_parent的详细说明