Welcome 微信登录

首页 / 软件开发 / 数据结构与算法

(算法导论习题解problem2.4)寻找一个序列中逆序对的数量

(算法导论习题解problem2.4)寻找一个序列中逆序对的数量

(算法导论习题解problem2.4)寻找一个序列中逆序对的数量2010-06-09 C++博客 那谁一个序列的逆序对是这样的两个元素, 对于序列A而言, i>j且A[i]<A[j], 于是A[i]和A[j]就形成一个逆序对.研究一个序列中逆序对的数量是有实际意义的, 对于插入排序而言, 它排序的时间与待排序序列的逆序对数量成正比.下面给出求出一个序列中逆序对数量的算法,类似于归并排序中使用的分治算法:一个序列的逆序对数量为它的左半部分逆序对的...
[算法问题]交换两个子数组的元素值

[算法问题]交换两个子数组的元素值

[算法问题]交换两个子数组的元素值2010-06-09 C++博客 那谁问题描述:设a[0:n-1]是一个有n个元素的数组,k(0<=k<=n-1)是一个非负整数.试设计一个算法将子数组a[0:k]与a[k+1:n-1]换位.要求算法在最坏情况下耗时O(n), 且只用到O(1)的辅助空间.这个问题比较常见了,一般的办法就是分别把两个子数组分别逆序排列,然后对整个数组进行逆序排列.也就是说,对一个数组a[8] = {1,2,3,4,5}而言,如果...
[算法问题]合并两个已经排序的数组为另一个数组

[算法问题]合并两个已经排序的数组为另一个数组

[算法问题]合并两个已经排序的数组为另一个数组2010-06-09 C++博客 那谁问题描述:设子数组a[0:k]和a[k+1:n-1]已排好序(0<=k<=n-1).试设计一个合并这两个子数组为排好序的数组a[0:n-1]的算法.要求算法在最坏的情况下所用的计算时间为O(n), 且只用到O(1)的辅助空间.这一题比较简单,看代码就知道了.#include <stdio.h>void DisplayArray(int *pArray...
IBM的MARS加密算法实现(上)

IBM的MARS加密算法实现(上)

IBM的MARS加密算法实现(上)2010-06-09吴真一、背景知识1977年颁布的数据加密标准DES算法。其56位长的密码空间在芯片技术和计算技术高速发展的今天,越来越不适应安全需求。1997年9月美国国家标准技术研究所(NIST)提出了征求新的加密标准---AES (Advanced Encryption Standard)的建议,作为一种取代DES的二十世纪加密标准技术。其目标是:(1)执行速度快;(2)易于设计;(3)从大型计算机到智能IC卡(C...
IBM的MARS加密算法实现(下)

IBM的MARS加密算法实现(下)

IBM的MARS加密算法实现(下)2010-06-09吴真2.3 密文解密用于密文解密的40个子密钥的生成和明文加密时的40个子密钥的生成方法相同.2.3.1 第一步前向混合输入的128位密文分成四块D[0],D[1],D[2],D[3],选取生成的40个密钥的最后四个分别与上述四块数据进行加操作,D[0] += K[36];D[1] += K[37];D[2] += K[38];D[3] += K[39];结果作为第一轮操作的输入数据.第一轮:D[0]D...
实现LZARI压缩算法的C++类

实现LZARI压缩算法的C++类

实现LZARI压缩算法的C++类2010-06-09 vckbase 阙荣文这是一个基于LZARI算法的数据压缩的类.Haruhiko Okumura 于1989年7月4日用c语言写实现了这个算法.但是上面用到了一些全局或静态的变量,在MFC下用起来很不方便.我把它改写成了一个c++类,使它可以方便的压缩和解压缩,更重要的是,我新增加了两个接口,这个类可以压缩/解压缩一段内存缓冲区,而不仅仅是文件.一共提供了5个对外接口:1.压缩/解压缩文件void Co...
猫吃老鼠的系统化算法

猫吃老鼠的系统化算法

猫吃老鼠的系统化算法2010-06-09李斤询一、问题描述现有n个老鼠围成一圆圈,有一只猫从任意位置开始吃老鼠,每次都隔一个老鼠吃,请给出最后一个老鼠的编号?题目要求是任给老鼠数n,输出猫最后吃的老鼠的编号。二、问题求解我们假设有N个老鼠,序号依次为1,2,3,......,N-1,N,并且按序号先后以顺时针围成一圈。老鼠信息的结构定义如下,使用双向列表,如下:typedef struct MouseNode{ int nNO; MouseNode *...
数据结构在游戏中的简单应用

数据结构在游戏中的简单应用

数据结构在游戏中的简单应用2010-06-09在游戏的编写中,不可避免的出现很多应用数据结构的地方,有些简单的游戏,只是由几个数据结构的组合,所以说,数据结构在游戏编程中扮演着很重要的角色。本文主要讲述数据结构在游戏中的应用,其中包括对链表、顺序表、栈、队列、二叉树及图的介绍。读者在阅读本文以前,应对数据结构有所了解,并且熟悉C/C++语言的各种功用。好了,现在我们由链表开始吧!1、链表在这一节中,我们将通过一个类似雷电的飞机射击游戏来讲解链表在游戏中的应...
常见排序算法的实现(一)-插入排序

常见排序算法的实现(一)-插入排序

常见排序算法的实现(一)-插入排序2010-06-09 C++博客 那谁插入排序是最简单最直观的排序算法了,它的依据是:遍历到第N个元素的时候前面的N-1个元素已经是排序好的了,那么就查找前面的N-1个元素把这第N个元素放在合适的位置,如此下去直到遍历完序列的元素为止.算法的复杂度也是简单的,排序第一个需要1的复杂度,排序第二个需要2的复杂度,因此整个的复杂度就是1 + 2 + 3 + ... + N = O(N ^ 2)的复杂度.// 插入排序void ...
常见排序算法的实现(二)-shell排序

常见排序算法的实现(二)-shell排序

常见排序算法的实现(二)-shell排序2010-06-09 C++博客 那谁shell排序是对插入排序的一个改装,它每次排序把序列的元素按照某个增量分成几个子序列,对这几个子序列进行插入排序,然后不断的缩小增量扩大每个子序列的元素数量,直到增量为一的时候子序列就和原先的待排列序列一样了,此时只需要做少量的比较和移动就可以完成对序列的排序了.// shell排序void ShellSort(int array[], int length){ int ...
常见排序算法的实现(三)-堆排序

常见排序算法的实现(三)-堆排序

常见排序算法的实现(三)-堆排序2010-06-09 C++博客 那谁堆的定义:n个关键字序列Kl,K2,…,Kn称为堆,当且仅当该序列满足如下性质(简称为堆性质):(1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤)若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左...
常见排序算法的实现(四)-冒泡排序

常见排序算法的实现(四)-冒泡排序

常见排序算法的实现(四)-冒泡排序2010-06-09 C++博客 那谁冒泡排序的思想:很简单,每次遍历完序列都把最大(小)的元素放在最前面,然后再对剩下的序列从父前面的一个过程,每次遍历完之后待排序序列就少一个元素,当待排序序列减小为只有一个元素的时候排序就结束了.因此,复杂度在最坏的情况下是O(N ^ 2).void Swap( int * a,int * b) { int temp; temp=* a; * a =* b; ...
常见排序算法的实现(五)-快速排序

常见排序算法的实现(五)-快速排序

常见排序算法的实现(五)-快速排序2010-06-09 C++博客 那谁快速排序的算法思想: 选定一个枢纽元素,对待排序序列进行分割,分割之后的序列一个部分小于枢纽元素,一个部分大于枢纽元素,再对这两个分割好的子序列进行上述的过程.// 对一个给定范围的子序列选定一个枢纽元素,执行完函数之后返回分割元素所在的位置,// 在分割元素之前的元素都小于枢纽元素,在它后面的元素都大于这个元素int Partition(int array[], int low, i...
二叉树的创建、前序遍历、中序遍历、后序遍历

二叉树的创建、前序遍历、中序遍历、后序遍历

二叉树的创建、前序遍历、中序遍历、后序遍历2010-06-09成晓旭// BTree.cpp : Defines the entry point for the console application./* 作者:成晓旭 时间:2001年7月2日(9:00:00-14:00:00) 内容:完成二叉树的创建、前序遍历、中序遍历、后序遍历 时间:2001年7月2日(14:00:00-16:00:00) 内容:完成二叉树的叶子节点访问,交换左、右孩子*/#inc...
<< 51 52 53 54 55 56 57 58 59 60 >>