个人头像照片 沉默术士

个人介绍

暂无个人介绍

  • 最新动态
  • 文章
  • 问答
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息
  • 回答了问题 2019-07-17

    除了经典和常用的排序算法外,还有哪些奇葩而有趣的排序算法

    这个好像不多
    踩0 评论0
  • 回答了问题 2019-07-17

    在非对称加密算法RSA中,假设"大"素数p=5.q=11,试给出一对公钥和私钥,给出计算过程

    两个素数为5,11,那么

    计算n=5*11=55.(RSA的高明之处,大数的分解是计算机的死敌!)

    计算欧拉函数:E(n)=(5-1)*(11-1)=4*10=40.

    随机选取一个数作为公钥e=3(小于E(n)并且与E(n)互质).

    求出密钥d,因为ed ≡ 1modE(n)(d<E(n)),求得d=27.(RSA的高明之处,因为通常选取的两个大素数会很大,符合d的数会很多,又给破解者带来不确定。)

    加密过程,给出明文M=20,加密之后是20^3=8000≡25mod55.密文为25.

    解密过程,密文为25,25^27≡20mod55.显然是正确的。

    踩0 评论0
  • 回答了问题 2019-07-17

    29岁的残疾人开始学编程有大作为晚不晚呢?

    不晚这些东西什么时候都可以学的
    踩0 评论0
  • 回答了问题 2019-07-17

    下列属于非对称加密算法的是A.RSA B.TWOFISH C.DES D.IDEA

    A
    踩0 评论0
  • 回答了问题 2019-07-17

    数据结构与算法那个老师讲的比较好?求视频教程下载地址!

    电工业版社数据结构与算析其实清华算式比较简单易懂要耐着性看东西急
    踩0 评论0
  • 回答了问题 2019-07-17

    如何用非递归算法求二叉树的高度

    遍历一下,不用递归就广度遍历就好了
    踩0 评论0
  • 回答了问题 2019-07-17

    KMP求模式值的复杂度为什么是O(m)?

    假设模式串的长度为m,而next数组是这样对模式串进行处理的:对每个index i,都找next[i - 1]或者next[next[i -1]]去判断下标 i 这个位置的数字应该是多少,所以总体就是一个下标“一次”运算,总共有m个,所以算next的时间复杂度是O(m)。
    踩0 评论0
  • 回答了问题 2019-07-17

    如何看待Python/Java的排序算法被发现有潜在的bug

    仔细读一下文章就知道啊…
    简单说这个团队使用了一种半自动化的形式化分析方法对排序算法的有效性进行了验证,并且在验证过程中发现了bug,且提出了逻辑上合理的解决方法。
    文末也进行了很好的总结:

    1. Formal methods are often classified as irrelevant and/or impracticable by practitioners. This is not true: we found and fixed a bug in a piece of software that is used by billions of users every single day. Finding and fixing this bug without a formal analysis and the help of a verification tool is next to impossible, as our analysis showed. It has been around for years in a core library routine of Java and Python. Earlier occurrences of the underlying bug were supposedly fixed, but actually only made its occurrence less likely.
    2. Even though the bug itself is unlikely to occur, it is easy to see how it could be used in an attack. It is likely that more undetected bugs are in other parts of core libraries of mainstream programming languages. Shouldn’t we try to find them before they can do harm or they can be exploited?
    3. The reaction of the Java developer community to our report is somewhat disappointing: instead of using our fixed (and verified!) version of mergeCollapse(), they opted to increase the allocated runLen “sufficiently”. As we showed, this is not necessary. In consequence, whoever uses java.utils.Collection.sort() is forced to over allocate space. Given the astronomical number of program runs that such a central routine is used in, this leads to a considerable waste of energy. As to the reasons, why our solution has not been adopted, we can only speculate: perhaps the JDK maintainers did not bother to read our report in detail, and therefore don’t trust and understand our fix. After all, Open Java is a community effort, largely driven by volunteers with limited time.
    简单胡乱翻译:
    1、形式化(分析)方法被证明是可行的,且有效的。这次的bug不使用形式化分析是很难通过只注重结果的测试方法发现的。事实上这个排序算法被使用了这么久也没有发现这个问题,证明了非形式化分析方法的不足。
    2、此类bug虽然难以在日常使用中发生,但很容易利用类似bug制作攻击。所以我们应该寻找并消灭它们。
    3、Java开发者社区并未采纳提议的修复方法,而是简单地采取了增大runLen数组的方法。作者对此很不高兴,并表达了一些不友好的臆测。
    其实我就想
    @RednaxelaFX
    大神问一下为什么Java不愿意使用这个fix而倾向使用增加内存分配。

    个人以为它们使用的KeY系统是一个非常好的尝试,个人粗浅的见地里大概是最好的形式化分析的应用。Java作为一门足够开放的语言对形式化方法的自动化提供了足够的基础,喜闻乐见。JML功不可没。
    踩0 评论0
  • 回答了问题 2019-07-17

    常用的原址排序算法有那哪些?

    很多啊 比如冒泡 希尔 选择 堆排序什么的

    非原地的也就归并什么的吧........
    还有倍增排序int范围需要65535额外空间、、、、
    踩0 评论0
  • 回答了问题 2019-07-17

    算法导论数学证明怎么看

    书不是看一遍就可以的,好书要多看,重复滴看;
    如果只是简单的了解,可以忽略前一句话;
    我承认, 算法导论很经典,也很令人烦躁,
    其实没怎么重点不重点,多看几次就可以了,
    先知道算法的使用, 在知道实现过程,研究算法 ,组合自己的算法,是一个过程
    踩0 评论0
  • 回答了问题 2019-07-17

    求整数 n 到 m 区间的累加和,其中n<=m.使用递归算法完成

    int diguiadd(int n,int m)
    {
    if(n<m)
    {
    return diguiadd(n,m-1)+m;
    }
    else
    {
    return n;
    }
    }
    void main()
    {

    int a=diguiadd(1,3);
    cout<<a<<endl;

    }
    踩0 评论0
  • 回答了问题 2019-07-17

    文件局部有序或文件长度较小的情况下,最佳的排序方法是什么

    直接插入排序
    踩0 评论0
  • 回答了问题 2019-07-17

    如何学好C/C++,,需要先学习数据结构和算法吗??新人报道。。求解。。

    个人认为学C可以用谭浩强先生编的教程,通俗易懂,言简意赅。对于初学者及中学者很有帮助。另外,C语言只是数据结构表示时的一个载体,你可以不用学数据结构去学C,我就是学数据结构前学的C。当然C学明白了,对数据结构有帮助
    踩0 评论0
  • 回答了问题 2019-07-17

    程序=算法+数据结构+程序设计方法+语言工具和环境中的语言工具和环境是什么

    语言工具 和环境 那是面向对象的、 java 安卓什么的___ C语言是面向过程 简单 说 就是编程语言 和安装系统和环境变量、 严重点说 就是编程思想……不知道有没有帮到你、看一遍得了别往心里去啊
    踩0 评论0
  • 回答了问题 2019-07-17

    用php实现几种常见的排序算法

    冒泡排序
    快速排序
    插入排序
    木桶排序
    踩0 评论0
  • 回答了问题 2019-07-17

    《数据结构与算法分析 java第二版》里讲deleteMin的图6-12实例算法实现是否有问题

    23
    踩0 评论0
  • 回答了问题 2019-07-17

    写一个算法 统计二叉树结点个数递归做

    这是我们老师给我们写的二叉树最基本的.......追加、删除节点的程序,很简单,但是也不简单,如果你基础比较好,这个可以忽略,如果不好,看看也无妨,打酱油路过.......呵呵

    #include <iostream>
    using namespace std;
    // 二叉搜索树
    class BsTree {
    public:
    // 构造函数中初始化为空树
    BsTree (void) : m_root (NULL), m_size (0) {}
    // 析构函数中释放剩余节点
    ~BsTree (void) {
    Clear ();
    }
    // 插入数据
    void Insert (int data) {
    Insert (new Node (data), m_root);
    m_size++;
    }
    // 删除数据,不存在返回false
    bool Remove (int data) {
    Node*& find = Find (data, m_root);
    if (find) {
    Insert (find -> m_left, find -> m_right);
    Node* node = find;
    find = find -> m_right;
    delete node;
    m_size--;
    return true;
    }
    return false;
    }
    // 删除所有值为data的数据
    void RemoveAll (int data) {
    while (Remove (data));
    }
    // 清空树
    void Clear (void) {
    Clear (m_root);
    m_size = 0;
    }
    // 将全部old更新为_new
    void Update (int old, int _new) {
    while (Remove (old))
    Insert (_new);
    }
    // 能否找到data
    bool Find (int data) {
    return Find (data, m_root) != NULL;
    }
    // 中序遍历
    void Travel (void) {
    cout << '{';
    Travel (m_root);
    cout << '}' << endl;
    }
    // 获取树的大小
    size_t GetSize (void) {
    return m_size;
    }
    // 获取树的高度
    size_t GetHeight (void) {
    return GetHeight (m_root);
    }
    private:
    // 节点
    class Node {
    public:
    Node (int data) : m_data (data), m_left (NULL), m_right (NULL) {}
    int m_data; // 数据
    Node* m_left; // 左树
    Node* m_right; // 右树
    };
    void Insert (Node* node, Node*& tree) {
    if (! tree)
    tree = node;
    else if (node) {
    if (node -> m_data < tree -> m_data)
    Insert (node, tree -> m_left);
    else
    Insert (node, tree -> m_right);
    }
    }
    Node*& Find (int data, Node*& tree) {
    if (! tree)
    return tree;
    else
    if (data == tree -> m_data)
    return tree;
    else
    if (data < tree -> m_data)
    return Find (data, tree -> m_left);
    else
    return Find (data, tree -> m_right);
    }
    void Clear (Node*& tree) {
    if (tree) {
    Clear (tree -> m_left);
    Clear (tree -> m_right);
    delete tree;
    tree = NULL;
    }
    }
    void Travel (Node*& tree) {
    if (tree) {
    Travel (tree -> m_left);
    cout << ' ' << tree -> m_data << ' ';
    Travel (tree -> m_right);
    }
    }
    size_t GetHeight (Node*& tree) {
    if (tree) {
    size_t lh = GetHeight (tree -> m_left);
    size_t rh = GetHeight (tree -> m_right);
    return (lh > rh ? lh : rh) + 1;
    }
    return 0;
    }
    Node* m_root; // 树根
    size_t m_size; // 树的大小
    };
    int main (void) {
    BsTree bs;
    bs.Insert (50);
    bs.Insert (70);
    bs.Insert (20);
    bs.Insert (60);
    bs.Insert (40);
    bs.Insert (30);
    bs.Insert (10);
    bs.Insert (90);
    bs.Insert (80);
    bs.Travel ();
    cout << bs.GetSize () << ", " << bs.GetHeight () << endl;
    cout << boolalpha << bs.Find (3) << endl;
    cout << boolalpha << bs.Find (10) << endl;
    bs.Remove (60);
    bs.Remove (30);
    bs.Travel ();
    bs.Insert (40);
    bs.Insert (40);
    bs.Travel ();
    bs.RemoveAll (40);
    bs.Travel ();
    bs.Insert (70);
    bs.Insert (70);
    bs.Travel ();
    bs.Update (70, 75);
    bs.Travel ();
    bs.Clear ();
    bs.Travel ();
    return 0;
    }
    踩0 评论0
  • 回答了问题 2019-07-17

    二进制有什么规则?

    1 是对 0是错...
    踩0 评论0
  • 回答了问题 2019-07-17

    编写程序:用冒泡排序法对15个浮点数进行排序。这15个浮点数用数组存放.

    #include<stdio.h>
    int main(void)
    {
    float bubble[15];
    printf("Enter 15 float numbers:\n");
    for(int i=0;i<15;++i)
    scanf("%f",&bubble[i]);
    for(int k=0;k<14;++k)
    for(int j=k;k<15;++k)
    {
    float temp;
    if(bubble[k]>bubble[j])
    {
    temp=bubble[k];
    bubble[k]=bubble[j];
    bubble[j]=temp;
    }
    }
    for(i=0;i<15;++i)
    printf("%f\n",bubble[i]);
    printf("\n");
    return 0;
    }
    踩0 评论0
  • 回答了问题 2019-07-17

    将二进制数10011010分别转化为八进制数和十六进制数,并写出计算步骤

    10011010b=9Ah
    10011010b=010011010b=232o
    每4位二进制数转换成1位十六进制数:0000~1001 => 0~9,1010~1111 => A~F,每3位二进制数转换成1位八进制数:000~111 => 0~7
    踩0 评论0
正在加载, 请稍后...
滑动查看更多