尹成的技术博客

尹成大魔王区块链与人工智能的技术分享

排序:
默认
按更新时间
按访问量

经典排序算法分析和代码-中篇

上篇文章中我们讨论插入排序、谢尔排序和堆排序,这章我们接着讲其他的几种排序。4.归并排序 归并排序以最坏情形的运行时间运行,而所使用的比较次数几乎是最优的。它是递归算法的一个很好的实例。 这个算法中的基本操作是合并两个已排序的表。因为这两个表是已排序的,所以若将输出放到第三个表中,则该算法可以通过...

2013-11-02 13:18:55

阅读数:2460

评论数:4

经典排序算法分析和代码-上篇

前言:这一篇文章中我们将讨论数组排序的问题,对于数据量比较大的,不能在内存中完成排序的,必须在磁盘上完成排序类型叫作外部排序,本篇将不讨论。对于内部排序的一些相关知识:存在几种容易的算法以排序,如插入排序。有一种算法叫做谢尔排序(ShellSort),它编程非常简单,以运行,并在实践中很有效。还有...

2013-10-30 13:36:55

阅读数:3210

评论数:0

基于Visual C++2013拆解世界五百强面试题--题18-程序结果分析2-终结篇

第二部分程序结果分析,分析流程还是写入代码注释中分析下面程序的输出:#include int main() { char *a = "hello"; char *b = "hello"; if (a == b) printf("YES...

2013-10-27 15:53:01

阅读数:2334

评论数:0

基于Visual C++2013拆解世界五百强面试题--题17-程序结果分析1

分析程序结果,分析过程我们就写在程序注释里面。写出下列代码的输出内容#include int inc(int a) { return (++a); } int multi(int *a, int *b, int *c) { return (*c = *a * *b); } type...

2013-10-27 15:10:10

阅读数:2110

评论数:0

基于Visual C++2013拆解世界五百强面试题--题16-进制分析

清写出下列代码的输出内容#include int main() { int a = -1, b = -12, c = -123, d = -1234; printf("%d,%d,%d,%d,%u,%u,%u,%u\n", a, b, c, d, a, b, c, d...

2013-10-25 16:55:38

阅读数:2402

评论数:0

基于Visual C++2013拆解世界五百强面试题--题15-递归相加

有一分数序列: 1/2 , 1/4 , 1/6 , 1/8 ......,用递归的方法,求此数列20项之和.可以看出规律:每一项位1/n*2这个很容易些递归,但是要注意一点,使用浮点数相除保存:下面上代码:#include double fun(int i) { //如果是第一项直接返回结...

2013-10-25 16:51:13

阅读数:2260

评论数:0

基于Visual C++2013拆解世界五百强面试题--题14-循环删除

有一个数组a[1000]存放0-1000,要求每隔二个数删除一个数,到末尾时循环到开头继续进行,求最后一个被删掉数的原始下标。看到题目可以用循环链表保存这些数,然后循环删除,大大减少了一些复杂的边界判断。下面上代码,看链表建立和删除的具体过程:#include #include typed...

2013-10-25 16:45:09

阅读数:3262

评论数:1

基于Visual C++2013拆解世界五百强面试题--题13-找最大公共子字符串

编程实现:找出两个字符串中最大公共子字符串,如"abccade"和"dgcadde"的最大子字符串为"cad"。如果不考虑效率的话直接比较,设置一个指针指向最大公共字符串,一个变量保存最大公共子字符串的长度。然后用第二个字符串的所有子字符...

2013-10-25 16:37:59

阅读数:2601

评论数:0

基于Visual C++2013拆解世界五百强面试题--题12-进制转换

编程实现,把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列库函数。转换成二进制,直接循环移位依次取每一位,判断1或0然后将相应字符放入字符串缓冲区中。对于十六进制,每一位数字符对应四位,可以每次取四位,判断相应字符放入字符串缓冲区中。理解了基本原理下面直接上代码:#...

2013-10-25 16:25:12

阅读数:2373

评论数:0

基于Visual C++2013拆解世界五百强面试题--题11-查找数字出现次数

在排序数组中,找出给定数字出现的次数比如{ 1, 2, 2, 2, 3}中2的出现次数是3次我们可使用二分查找发,分别查找出2最先出现的位置和最后出现的位置相减即可。下面是上代码:#include //二分法获取元素最后出现的位置,可能在元素的下一位 int GetHigh(int arra...

2013-10-24 18:01:02

阅读数:2252

评论数:1

基于Visual C++2013拆解世界五百强面试题--题10-找出N个数种最大的K个数

有一亿个整数,请找出最大的 1000 个,要求时间越短越好, 空间占用越好越好。如果不考虑时间效率,很容易想到解决方法,我们只需存储前一千个数,然后依次读入后面的数和这一千个数组比较,替换其中比较小的数即可,但是这样时间复杂度比较高,如果用二叉堆实现,直接可以替换1000个数中最小的数字,而消耗的...

2013-10-24 15:55:30

阅读数:3805

评论数:0

基于Visual C++2013拆解世界五百强面试题--题9-找出所有的排列方式

给出一个函数来输出一个字符串的所有排列按照排列组合的知识我们知道N个字符排列组合个数有n!种,那么可知f(n) = n*f(n-1),如果{1,2}的组合有两种,12,21,那么{123}的组合可以简单的插入{12}组合的任意位置:312,132,123321,231,213可以看到3分别插入前面...

2013-10-23 17:38:58

阅读数:2606

评论数:0

基于Visual C++2013拆解世界五百强面试题--题8-数组的排序和查找

用三种方法实现对一个数组的排序,并设计一个函数实现数的查找,要求时间越短越好,空间占用越少越好。对数组排序的方法很多,我们选比较常用和容易的三种排序,直接插入排序,冒泡排序和快速排序。直接插入排序:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序冒泡排序:比较相邻的元素。...

2013-10-23 11:43:19

阅读数:2204

评论数:0

基于Visual C++2013拆解世界五百强面试题--题7-链表的各种操作

请用C实现一个链表,实现链表的查找,逆置,替换,删除,添加,清空,创建。查找、替换和删除、添加里面都会用到遍历链表的操作,所以重点在于遍历,链表的逆置和清空考虑到效率,我们可以用递归实现,至于创建节点,我们直接创建一个空节点作为头节点,不使用其数据域。下面直接上代码:#include #incl...

2013-10-22 17:23:13

阅读数:3234

评论数:5

基于Visual C++2013拆解世界五百强面试题--题6-double类型逆序

请设计一个函数,不许用到字符串函数,用数学运算,将double类型数据转换,例如123.456转换成654.321首先想到依次提取他的每一个位数,然后进行运算,移动每一位数到相应位置,结果相加就能逆序double数下面上程序:#include #include #include double Co...

2013-10-21 16:52:25

阅读数:2703

评论数:1

基于Visual C++2013拆解世界五百强面试题--题5-自己实现strstr

请用C语言实现字符串的查找函数strstr, 找到则返回子字符串的地址,没有找到返回为空,请用数组操作与指针操作实现看到题目想到最简单的方法就是母字符串和子字符串比较,如果不通,将指向母字符串的指针向前移动,继续查找,下面我们分别用数组操作与指针操作实现。国际惯例,参考前面文章新建一个vs2013...

2013-10-21 14:48:51

阅读数:2465

评论数:0

基于Visual C++2013拆解世界五百强面试题--题4-double转换成字符串

请用C语言实现将double类型数据转换成字符串,再转换成double类型的数据、int类型的数据想要完成题目中的功能,首先我们的先对系统存储double的格式有所了解。浮点数编码转换使用的是IEEE的编码标准。类型存储位数​​​偏置值​​数符(S)阶码(E)尾数(M)总位数十六进制十进制短浮点数...

2013-10-21 11:43:54

阅读数:3005

评论数:5

VC++实现获取进程端口检测木马

我们都知道病毒木马都要与外面通信,如何检测呢,今天我们来时间检测进程端口来检测木马请见代码与注释#include #include #include #include #pragma comment(lib, "ws2_32.lib") //-------------...

2012-10-25 11:48:12

阅读数:2834

评论数:0

VC++编程实现镜像劫持

所谓的镜像劫持,就是在注册表的[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\Image File Execution Options]处新建一个以杀毒软件主程序命名的项,例如Rav.exe。然后再创建一个子键“D...

2012-10-24 15:38:49

阅读数:4518

评论数:0

用Visual studio11在Windows8上开发驱动实现内存填0杀进程

在Windows NT中,80386保护模式的“保护”比Windows 95中更坚固,这个“镀金的笼子”更加结实,更加难以打破。在Windows 95中,至少应用程序I/O操作是不受限制的,而在Windows NT中,我们的应用程序连这点权限都被剥夺了。在NT中几乎不太可能进入真正的ring0层。...

2012-10-24 15:29:52

阅读数:3834

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭