zoukankan      html  css  js  c++  java
  • 关于debug和release 以及new 和delete

    题目:给出一组字符串

     输入:"ate","eat","Eat","new","ENW",“wha”

    输出::"ate","eat","Eat","

            "new","ENW"

    第一种方法,首先将所有字符串都转换为小写(或者大写也OK,重点在于统一字符串),

                    然后将单个字符串中的字母按照大小顺序进行排列;

                   最后比较字符串大小,如果有相同的字符串就输出。

                  这种方法复杂度其实也挺大的,因为有三层循环。

    第二种方法,第一步同第一种方法

                    然后利用字符串中自带find函数进行查找,

                 用一个vector存储相同的字符串的位置

         好吧,这种方法其实复杂度太大了,因为find 函数本来就是一重循环,共有四层循环

    第三种方法,好吧,我承认是昨天看了hash表的原因,我想采用hash表来实现

                    首先计算每个字符串的hash值,方法如下,当然也可以改变方式

                    string s;  int value;

                  for(string::iterator it=s.begin(),it!=s.end();it++)

                   {

                                 if(isupper(*it))

                                        value+=(*it-'A');

                                  else

                                     value+=(*it-'a');

                        }

    将字符串插入到hash表中的方法是,由于每一行是我们需要的“相同”的字符串,所以首先是判断hash值是否相同,如果相同了之后再比较这两个字符串是否“相同”

    如果字符串也“相同”,采用头插法插入字符串;如果不相同的话则采用线性探测法去寻找储存该字符串的位置,(现在看来貌似这点我有点没有做好,改一改)

    最后也实现了相同的功能。这种方法主要是想通过hash值的设置来减少字符串的比较次数,从而降低复杂度。

    尝试了一下,采用10000组数据,发现第二种方法永远是最劣质的,好吧,这种方法我也觉得,看几个的时候还是OK的,数据一多的时候,立马暴露缺陷了。

    但是奇怪的事情出现了,第三种方式在debug模式下足足比第一种方式快了10倍,但是一到release模式下竟然比第一种方式还慢了一半,实在是百思不得其解啊,看来还是要好好看看debug和release的区别了!!!

    debug和release模式下的区别

  • 相关阅读:
    Thread Based Parallelism
    Thread Based Parallelism
    The Divide and Conquer Approach
    Algorithms
    FTP
    POP and IMAP
    通过 python 处理 email
    Android开发环境搭建简介
    Hello world
    mybatis3.2初学感悟
  • 原文地址:https://www.cnblogs.com/limera/p/debug_release.html
Copyright © 2011-2022 走看看