判断给定数组是否已经排好序

输入纯数字、纯大写字母、纯小写字母或者其三者的混合,若为纯数字序列,则按数字大小顺序判断,若为混合序列,则按ASCII表的顺序大小判断。
例如:
输入:1 3 a b A
输出:flase
输入:1 2 3 3 3
输出:true


```cpp
#include<bits/stdc++.h>     //C++万能头文件,但可能会降低速度,部分编译器不支持
using namespace std;int main(){string num;vector<string>a;                //vector实现动态数组while(1){cin>>num;a.push_back(num);           //将读入的num存在a数组中if(cin.get()=='\n') break;         //实现在未知大小的情况下,录入到换行符为结束}//cout<<a.back();               //会读取最后一个数//int n=a.size();               //会读取a数组的长度(注意不是下标)int j=0,length=a.size();while(j<length-1&&(a[j].compare(a[j+1])==0)) j++;      //排除元素全相同,或者元素开头存在相同的情况if(length<=1||j==length-1){                         //数组中只有一个元素或者元素全相同,则返回truecout<<"true";return 0;}else j=a[j].compare(a[j+1]);                    //在排除前面元素相同的基础上,比较当前元素与下一元素的结果for(int i=1;i<length-1;i++){if((a[i].compare(a[i+1]))*j<0){           //从第二个元素开始比较,乘积存在负数即为存在反序,否则为正序cout<<"false";return 0;}}cout<<"true";                       //没有退出程序,即为排好序return 0;
}

学习心得:
1.特别要注意:
a.push_back(num); if(cin.get()==’\n’) break;这两句的顺序问题,一定要先存入再判断是否为换行符,否则最后一个数据将无法输入。
2.在进行数据排序判断时,不可以将第一个与第二个值的结果记下来去跟后面的判断,否则可能因为前两个数据相同返回的值为0导致后面的无法判断,所以必须通过while循环将可能前几个相同的数据剔除。
3.f后面的for循环从1开始和从当前元素的下一个开始均可,只不过程序运行次数和写法繁简度不同。
4.记住vector可以作为动态数组使用,可解决没有给定长度的情况。
a.back(): 求最后一个元素
a.size(): 求动态数组的长度

经典例题:判断给定数组是否已经排好序相关推荐

  1. 判断给定序列是否为BST后序遍历序列

    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.假设输入的数组的任意两个数字都互不相同. 目录 一.BST 1.1 定义 1.2 性质 二.思路 2.1 非递归版本 2.2 递归版本 ...

  2. 判断给定数组是否包含132模式 132 Pattern

    为什么80%的码农都做不了架构师?>>>    问题: Given a sequence of n integers a1, a2, ..., an, a 132 pattern i ...

  3. 判断某数组是不是二叉树的后序遍历序列 python递归与非递归解法

    python 递归 class Solution:def VerifySquenceOfBST(self, sequence):# write code hereif len(sequence) &l ...

  4. [二分查找] 二:二分查找的经典例题

    1.何时应该会使用二分查找 当题目中出现有序数组时 当时间复杂度要求为log(n)时 搜索范围可以一次缩小一半时 2. 经典例题1 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果 ...

  5. 查找两个已经排好序的数组的第k大的元素

    http://www.cnblogs.com/buptLizer/archive/2012/03/31/2427579.html 给出两个排好序的数组 ,不妨设为a,b都按升序排列,及k的值,求出第k ...

  6. 在两个已经排好序的数组里找出第K小的数

    前言: 这道题是一道非常常见的面试题,也是一道能够考察一个人的编程能力和算法的一道题.如果要求复杂度为 O(k), 是比较容易做出来的,但是,一般来讲,面试官要求给出更低复杂度的算法.网上有很多不同的 ...

  7. Java黑皮书课后题第7章:**7.19(是否排好序了?)编写以下方法,如果参数中的list数组已经排好序了则返回true。编写一个测试程序,提示用户输入一个列表,显示该列表是否已经排好序

    7.19(是否排好序了?)编写以下方法,如果参数中的list数组已经排好序了则返回true.编写一个测试程序,提示用户输入一个列表,显示该列表是否已经排好序 题目 题目描述 破题 代码 题目 题目描述 ...

  8. 判断某数组是不是二叉树的前序遍历序列 python递归

    code class Solution:def VerifySquenceOfBST(self, sequence):# write code hereif len(sequence) <= 0 ...

  9. 判断一个数组是否有序

    一般来说,判断一个数组或序列是正序,倒序还是乱序,需要我们将这个数组完整的遍历一遍后才能得出答案,它不像折半查找那样只处理少量的数据便能得出结论,因为一段包含成千上万个元素的有序序列,哪怕将其中两个元 ...

最新文章

  1. python最长连续子串_LeetCode 03无重复字符的最长子串(滑动窗口)
  2. 消息推送与同步协议的思考
  3. java中DWR的使用
  4. ?Web开发者需要知道的CSS Tricks
  5. 计算字符在字符串中出现的次数
  6. java object 源码_java中Object类 源代码详解
  7. 信号量、使用信号量来完成读写模型(消费者生产者模型)线程池、读写锁面试题
  8. 金蝶K3 WISE BOM多级展开_销售成本表
  9. sas编程技术教程 人大经济论坛sas培训
  10. Windows 7 安装主题包,双击没反应的临时解决方法
  11. 你还因为缺“Java项目经验”找不到工作?适合应届生的20个“项目经验”送给你
  12. 数学建模入门篇(0基础必看,全是自己的经验)
  13. 强烈推荐这 15 个网站!
  14. word怎么竖向选中,word怎么文字竖排的两种方法
  15. wifi分析仪是什么?
  16. linux怎么随机生成数字,详解Linux如何生成随机数字和字符串
  17. 解密:斐讯N1为何火了?分享全套N1救砖指南!值得收藏
  18. excel填充遇到的坑
  19. HTML 利用 Web Audio API 进行音频可视化
  20. python中的序列封包和序列解包

热门文章

  1. linux命令-文件命令
  2. 游戏出海迎来新高,出海的路上如何防范DDoS风险?
  3. h5页面使用html2canvas实现分享海报
  4. 油田生产数据选取22.4.1 观察实验
  5. 最适合新手小白的TikTok干货运营手册
  6. 网络爬虫判断页面是否更新
  7. 14.Java- Spring
  8. 安卓APP证书Android签名证书.keystore文件制作生成
  9. The Things Network LoRaWAN Stack V3 学习笔记
  10. 33岁想从头学做网页设计_从头开始设计字体-并在24小时内将其提交给Google字体...