六、题目:三部排序
填空题
一般的排序有许多经典算法,如快速排序、希尔排序等。
但实际应用时,经常会或多或少有一些特殊的要求。我们没必要套用那些经典算法,可以根据实际情况建立更好的解法。
比如,对一个整型数组中的数字进行分类排序:
使得负数都靠左端,正数都靠右端,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{
__________________________; //填空位置
}
}

}


分析题目:利用指针移动进行排序
左边的值比右边的小,mod指针向右移动
当出现mod所指的值比中间值大的时候,mod与right指针所指向的值互相交换位置,mod继续向右移动

#include<iostream>
#include<algorithm>
using namespace std;void sort(int* x, int len)
{int mod = 0;int left = 0;int right = len-1;while(mod<=right){if(x[mod]<0){int t = x[left];x[left] = x[mod];x[mod] = t;left++;mod++;   //左侧指针交换 }else if(x[mod]>0){int t = x[right];x[right] = x[mod];x[mod] = t;right--;     //右侧指针交换    }else{mod++;   //当为0的时候,指针向后移动 }}
}
int main(){int arr[]={25,18,-2,0,16,-5,33,21,0,19,-16,25,13,0};sort(arr,14);for(int i=0;i<14;i++){cout<<arr[i]<<" ";}return 0;
}

2013蓝桥杯C++B:三部排序(指针双向扫描)相关推荐

  1. 标题 错误票据c语言,内含答案的 -- 2013蓝桥杯C语言本科组B.doc

    内含答案的 -- 2013蓝桥杯C语言本科组B.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们 ...

  2. 2013蓝桥杯-B-省赛-六-三部排序

    六.三部排序 package com.markerhub;public class TEST { // 负数都靠左端,正数都靠右端,0在中部static void sort(int[] x) //解题 ...

  3. 2013蓝桥杯java试题_蓝桥杯2013决赛java本科b组试题.doc

    蓝桥杯2013决赛java本科b组试题.doc 试题一:公式求值问题描述输入n,m,k,输出下面公式的值.其中C_n^m是组合数,表示在n个人的集合中选出m个人组成一个集合的方案数.组合数的计算公式如 ...

  4. 2013蓝桥杯java试题_2013年第四届蓝桥杯javaB组 试题 答案 解析

    1.世纪末的星期 曾有邪教称1999年12月31日是世界末日.当然该谣言已经不攻自破. 还有人称今后的某个世纪末的12月31日,如果是星期一则会.... 有趣的是,任何一个世纪末的年份的12月31日都 ...

  5. 蓝桥杯 基础练习 数列排序

    http://lx.lanqiao.cn/problem.page?gpid=T52 问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列.1<=n<=200 输入格式 第一行 ...

  6. java 蓝桥杯算法提高 成绩排序2

    试题 算法提高 成绩排序2 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给出n个学生的成绩,将这些学生按成绩排序,排序规则:总分高的在前:总分相同,数学成绩高的在前:总分与数学相 ...

  7. 蓝桥杯 基础练习 数列排序

    问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列.1<=n<=200 输入格式 第一行为一个整数n. 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000. 输 ...

  8. 蓝桥杯 ALGO-97 算法训练 排序

    问题描述 编写一个程序,输入3个整数,然后程序将对这三个整数按照从大到小进行排列. 输入格式:输入只有一行,即三个整数,中间用空格隔开. 输出格式:输出只有一行,即排序后的结果. 输入输出样例 样例输 ...

  9. 2013蓝桥杯C++B:错误票据

    七.题目:错误票据 某涉密单位下发了某种票据.并要在年终所有收回. 每张票据有唯一的ID号.全年全部票据的ID号是连续的.但ID的開始数码是随机选定的.由于工作人员疏忽.在录入ID号的时候发生了一处错 ...

最新文章

  1. DOS命令-创建删除文件和文件夹
  2. python反转链表和成对反转
  3. Macbook m1 install Homebrew
  4. 【电路补习笔记】1、电阻的参数与选型
  5. 企业实战_24_MyCat实现读写分离
  6. 为什么不能使用 BigDecimal 的 equals 方法做等值比较
  7. IO流 (四) ----- 转换流和标准字节输出流
  8. multipathd dead but pid file exists
  9. Java数据库的JDBC编程
  10. 315/433MHZ无线遥控接收解码源程序 Keil源程序 含AD格式电路图
  11. 超详细的python搭建区块链(下)
  12. √ JavaSE - 02.怎么打印回形数
  13. 怎么把pdf格式转成word文档?如何将 PDF 转换为 Word
  14. Android系统版本在6.0+以上需要动态申请权限
  15. html中只显示农历的完整代码,很全的显示阴历(农历)日期的js代码
  16. 能带给人生奇迹是低头的努力
  17. hydra的基本使用
  18. 研招网官方:关于考研报名的提醒!
  19. 协方差Cov(X,Y)的含义(转)
  20. 边缘计算服务器浪潮信息,浪潮发布边缘计算微服务器EIS800系列产品

热门文章

  1. python可以做什么工作-Python入门后,想要从事自由职业可以做哪方面工作?
  2. python编程入门教学-史上最全Python编程基础入门教程
  3. 如何系统的自学python-如何系统学习python
  4. 三星Bixby如此人性 小娜的下一步就是善解人意
  5. 【语音识别基础】总有一天你会用到,嗯,没有公式~
  6. swiper切换按钮位置改变_2019-01-18左右按钮控制swiper轮播图切换
  7. FFmpeg源代码简单分析:avformat_alloc_output_context2()
  8. x264 编码器选项分析 (x264 Codec Strong and Weak Points) 1
  9. 一种H.264高清视频的无参考视频质量评价算法(基于QP和跳过宏块数)
  10. MFC 中 Radio Button 使用方法