个人头像照片 玄学酱

个人介绍

这个时候,玄酱是不是应该说点什么...

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

    设待排序的记录序列用单链表做存储结构,试写出插入排序算法。。。。

    #include"stdafx.h"
    #include "stdio.h"
    typedef struct node{
    int data;
    struct node *next;
    }node;
    void main()
    {
    node *create(){
    node *head,*p,*q;
    q = head;
    int i=0;
    int x;
    head=(node *)malloc(sizeof(node));
    while(1)
    {
    printf("please input the node:");
    scanf("%d",&x);
    if(x==0) {break;}
    p=(node *)malloc(sizeof(node));
    p->data=x;
    if(++i==1)
    {
    head->next=p;
    }
    else
    {
    q->next=p;
    }
    q=p;
    }
    q->next=NULL;
    return head;
    }
    node *search(node *head,int pos)
    {
    node *p;
    int len=length(head);
    p=head->next;

    if(pos<0) {

    printf("incorrect position!\n"); return NULL;
    }
    else if(pos>len)
    {
    printf("incorrect position!\n"); return NULL;
    }
    else if(pos==0) {

    return head;
    }
    if(p==NULL) {

    printf("the link is empty!\n"); return NULL;
    }
    while (--pos)

    { p=p->next; }

    return p;
    }
    node *insert(node *head,int pos,int x)
    {
    node *p,*q=NULL;
    q=(node *)malloc(sizeof(node));
    q->data=x;
    if(pos==0) {

    head->next=q; return head; }

    p=search(head,pos);

    if(p!=NULL) { q->next=p->next; p->next=q; }

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

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

    转16进制:每四位分隔开,分为1001 1010,其中1001(2)=2^3+2^0=9(10)=9(16),1010(2)=2^3+2^1=10(10)=A(16),因此10011010(2)=9A(16)。
    转8进制:每三位分隔开,最高位不足的补零,分为010 011 010,其中010(2)=2^1=2(8),011=2^1+2^0=3(8),010(2)=2^1=2(8),因此10011010(2)=232(8)。
    踩0 评论0
  • 回答了问题 2019-07-17

    算法与数据结构的内容简介

    本书概念清晰,逻辑严密,重点突出,将抽象的描述与具体的实现结合,便于教学,也使初学者容易掌握其重点内容,有利于自学。本书的算法描述和实现采用类c和C语言。
    本书可以作为计算机科学与技术、信息与计算科学和相关专业的本科或大专教材。

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

    二进制数(11011010)2转换成十进制数是多少??? 怎么算出来的,方法、答案。

    运行calc, 选择程序模式,切换2进制输入,在切换10进制
    踩0 评论0
  • 回答了问题 2019-07-17

    线性同余方程的特点及求解是什么?

    线性同余方程 在数论中,线性同余方程是最基本的同余方程,“线性”表示方程的未知数次数是一次,即形如: 的方程。此方程有解当且仅当 b 能够被 a 与 n 的最大公约数整除(记作 gcd(a,n) | b)。这时,如果 x0 是方程的一个解,那么所有的解可以表示为: 其中d 是a 与 n 的最大公约数。在模 n 的完全剩余系 {0,1,…,n-1} 中,恰有 d 个解。 目录 1 例子 2 求特殊解 3 线性同余方程组 4 参见 例子 在方程 3x ≡ 2 (mod 6) 中, d = gcd(3,6) = 3 ,3 不整除 2,因此方程无解。 在方程 5x ≡ 2 (mod 6) 中, d = gcd(5,6) = 1,1 整除 2,因此方程在{0,1,2,3,4,5} 中恰有一个解: x=4。 在方程 4x ≡ 2 (mod 6) 中, d = gcd(4,6) = 2,2 整除 2,因此方程在{0,1,2,3,4,5} 中恰有两个解: x=2 and x=5。 求特殊解 对于线性同余方程 ax ≡ b (mod n) (1) 若d = gcd(a, n 整除 b ,那么为整数。由裴蜀定理,存在整数对 (r,s) (可用辗转相除法求得)使得 ar+sn=d,因此 是方程 (1) 的一个解。其他的解都关于与 x 同余。 举例来说,方程 12x ≡ 20 (mod 28) 中d = gcd(12,28) = 4 。注意到 ,因此 是一个解。对模 28 来说,所有的解就是 {4,11,18,25} 。 线性同余方程组 线性同余方程组的求解可以分解为求若干个线性同余方程。比如,对于线性同余方程组: 2x ≡ 2 (mod 6) 3x ≡ 2 (mod 7) 2x ≡ 4 (mod 8) 首先求解第一个方程,得到x ≡ 1 (mod 3),于是令x = 3k + 1,第二个方程就变为: 9k ≡ 1 (mod 7) 解得k ≡ 3 (mod 7)。于是,再令k = 7l + 3,第三个方程就可以化为: 42l ≡ 16 (mod 8) 解出:l ≡ 0 (mod 4),即 l = 4m。代入原来的表达式就有 x = 21(4m) + 10 = 84m + 10,即解为: x≡ 10 (mod 84) 对于一般情况下是否有解,以及解得情况,则需用到数论中的中国剩余定理。 参见 二次剩余 中国剩余定理 谈谈解线性同余方程 因为ACM/ICPC中有些题目是关于数论的,特别是解线性同余方程,所以有必要准备下这方面的知识。关于这部分知识,我先后翻看过很多资料,包括陈景润的《初等数论》、程序设计竞赛例题解、“黑书”和很多网上资料,个人认为讲的最好最透彻的是《算法导论》中的有关章节,看了之后恍然大悟。经过几天的自学,自己觉得基本掌握了其中的“奥妙”。拿出来写成文章。 那么什么是线性同余方程。对于方程:ax≡b(mod m),a,b,m都是整数,求解x 的值。 解题例程:pku1061 青蛙的约会 解题报告 符号说明: mod表示:取模运算 ax≡b(mod m)表示:(ax - b) mod m = 0,即同余 gcd(a,b)表示:a和b的最大公约数 求解ax≡b(mod n)的原理: 对于方程ax≡b(mod n),存在ax + by = gcd(a,b),x,y是整数。而ax≡b(mod n)的解可以由x,y来堆砌。具体做法,见下面的MLES算法。 第一个问题:求解gcd(a,b) 定理一:gcd(a,b) = gcd(b,a mod b) 实现:古老的欧几里德算法 int Euclid(int a,int b) { if(b == 0) return a; else return Euclid(b,mod(a,b)); } 附:取模运算 int mod(int a,int b) { if(a >= 0) return a % b; else return a % b + b; } 第二个问题:求解ax + by = gcd(a,b) 定理二:gcd(b,a mod b) = b * x' + (a mod b) * y' = b * x' + (a - a / b * b) * y' = a * y' + b * (x' - a / b * y') = a * x + b * y 则:x = y' y = x' - a / b * y' 实现: triple Extended_Euclid(int a,int b) { triple result; if(b == 0) { result.d = a; result.x = 1; result.y = 0; } else { triple ee = Extended_Euclid(b,mod(a,b)); result.d = ee.d; result.x = ee.y; result.y = ee.x - (a/b)*ee.y; } return result; } 附:三元组triple的定义 struct triple { int d,x,y; }; 第三个问题:求解ax≡b(mod n) 实现:由x,y堆砌方程的解 int MLES(int a,int b,int n) { triple ee = Extended_Euclid(a,n); if(mod(b,ee.d) == 0) return mod((ee.x * (b / ee.d)),n / ee.d); else return -1; }//返回-1为无解,否则返回的是方程的最小解 说明:ax≡b(mod n)解的个数: 如果ee.d 整除 b 则有ee.d个解; 如果ee.d 不能整除 b 则无解。

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

    怎么用vc++6.0创建一个RSA加密算法的图形界面工程 步骤尽量完整哈 谢谢哈

    图形界面用MFC,加密可以用CSP.
    踩0 评论0
  • 回答了问题 2019-07-17

    各种排序算法所需辅助空间是多少?

    1、 所有的简单排序方法(包括:直接插入、起泡和简单选择)和堆排序的空间复杂度为O(1);


    2、 快速排序为O(logn ),为栈所需的辅助空间;


    3、 归并排序所需辅助空间最多,其空间复杂度为O(n );


    4、链式基数排序需附设队列首尾指针,则空间复杂度为O(rd )。

    都不知道怎么回答,各种排序说的也太多了,这里讲几种简单的吧,希望对你有帮助。
    比如n个顺序存储元素进行排序,a[0]做“哨兵”(即a[0]不存数据,而是用作辅存空间使用)的情况
    1 、直接插入排序:比较次数 最少n-1次;最多(n-1)(n+2)/2
    移动次数 最少0; 最多(n-1)(n+4)/2
    使用一个辅助存储空间,是稳定的排序; 



    2 、折半插入排序:比较次数 最少与最多同,都是n*log2n(其中2为底,下边表示同),
    移动次数 最少0,最多时间复杂度为O(n2);(n的平方,以下也如此表示);
    使用一个辅助存储空间,是稳定的排序;



    3 、冒泡排序: 比较最少为:n-1次,最多时间复杂度表示为o(n2);
    移动次数最少为0,最多时间复杂度表示为O(n2);
    使用一个辅存空间,是稳定的排序;



    4 、简单选择排序: 比较次数没有多少之分,均是n(n-1)/2;
    移动次数最少为0,最多为3(n-1);
    使用一个辅存空间,是稳定的排序; 



    5 、快速排序:比较和移动次数最少时间复杂度表示为O(n*log2n);
    比较和移动次数最多的时间复杂度表示为O(n2);
    使用的辅助存储空间最少为log2n,最多为n的平方;是不稳定的排序;



    6、 堆排序: 比较和移动次数没有好坏之分,都是O(n*log2n);
    使用一个辅存空间,是不稳定的排序;



    7、2-路归并排序:比较和移动次数没有好坏之分,都是O(n*log2n);
    需要n个辅助存储空间,是稳定的排序;

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

    适合C语言中级程序员的书

    C prime plus 十分经典 从入门到精通
    算法导论 在语法基本掌握的基础下可以尝试学习算法
    踩0 评论0
  • 回答了问题 2019-07-17

    写一个冒泡法排序函数sort,并在主函数中调用sort函数对10个整数排序

    #include <stdio.h>#define M 10
    void sort(int *a, int size);

    int main(){
    int a[M] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
    int i = 0;
    for(i = 0; i < M; i++)
    {
    printf("%4d", a[i]);
    }
    printf("\n");
    sort(a, M);
    for(i = 0; i < M; i++)
    {
    printf("%4d", a[i]);
    }
    printf("\n");
    return 0;
    }

    void sort(int *a, int size){
    int i = 0;
    int j = 0;
    for(i = 0; i < size - 1; i++)
    {
    for(j = 0; j + 1 < size; j++)
    {
    if(a[j] > a[j+1])
    {
    a[j] = a[j] + a[j+1];
    a[j+1] = a[j] - a[j+1];
    a[j] = a[j] - a[j+1];
    }
    }
    }
    }
    踩0 评论0
  • 回答了问题 2019-07-17

    各种加密算法也是要写代码吗?用的是什么语言像DES, RSA这种的。

    算法只是一种思想,与他使用什么语言实现无关,你把算法学好了,用什么语言都可以实现
    踩0 评论0
  • 回答了问题 2019-07-17

    已知A【n】为整数数组,编写一个递归算法求其中n个元素的平均值

    #include <stdio.h>
    #define N 10
    double average(int a[ ], int n)
    {
    if (n == 1)
    return a[0];
    else
    return ((n - 1) * average(a, n - 1) + a[n - 1]) / n;
    }
    int main( )
    {
    int a[N] = {73, 39, 43, 71, 11, 7, 69, 77, 100, 96};
    double aver;
    aver = average(a, N);
    printf("%lf\n", aver);
    }
    踩0 评论0
  • 回答了问题 2019-07-17

    iphone5s哪个计算器有二进制换算

    童鞋,苹果自带的计算器里面就有啊。打开方式就是把手机的自动旋转屏幕打开,然后打开计算器,再把手机横屏,见证奇迹的时刻到了。不要感谢我,我叫雷锋。
    踩0 评论0
  • 回答了问题 2019-07-17

    c语言插入法排序的算法步骤

    任何一本数据结构的书,在排序一章有详细的介绍。
    踩0 评论0
  • 回答了问题 2019-07-17

    一个优秀的人脸算法工程师应该具备哪些能力?

    耶鲁大学文凭
    踩0 评论0
  • 回答了问题 2019-07-17

    有数据结构与算法的视频吗?

    看书吧,这些东西看也没什么用啊,多看书多敲代码,尤其是敲代码,看懂和实现,绝对是两码事,不过,严蔚敏的就不错
    踩0 评论0
  • 回答了问题 2019-07-17

    数据结构和算法等要求高吗

    只能这么说,现在的软件工程,除了游戏等一些要求算法比较高的话,其他的一般编程岗位都要求不会很高,有很多线程的api可以使用。
    踩0 评论0
  • 回答了问题 2019-07-17

    算法工程师、研发工程师、软件工程师都是什么?

    都是搞IT的,都是工程师。
    踩0 评论0
  • 回答了问题 2019-07-17

    用c语言解决快速排序算法,不用递归?

    写程序的目的就是花最少的代价实现要求。 能用简单的尽量用简单的。
    踩0 评论0
  • 回答了问题 2019-07-17

    C语言中各种排序法介绍?

    冒泡排序

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

    2048游戏中使用的是什么数据结构和算法

    没啥复杂的数据结构和算法啊,那个游戏的implementation是straight forward的。。。
    踩0 评论0
正在加载, 请稍后...
滑动查看更多