09 2012 档案
摘要:如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了。这样,我们就引入了优先级队列 这种数据结构。 优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有(1)查找(2)插入一个新元素 (3)删除 一般情况下,查找操作用来搜索优先权最大的元素,删除操作用来删除该元素 。对于优先权相同的元素,可按先进先出次序处理或按任意优先权进行。#ifndef _PRIORITYQUEUE_H_#define _PRIORITYQUEUE_H_#i
阅读全文
摘要:今天老板出差了,闲来无事自己写了一个矩阵类作为休息,想实现像matlab一样强大的功能,今天只是实现了最基本的部分,以后还得多多改进头文件: 1 #ifndef _MATRIX_H_ 2 #define _MATRIX_H_ 3 4 template <class DataType> 5 class Matrix 6 { 7 public: 8 Matrix(); //constructor 9 Matrix(int r, int c); ...
阅读全文
摘要:快速排序(Quicksort)是对冒泡排序的一种改进。基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。 一趟快速排序的算法是: 1)设置两个变..
阅读全文
摘要:指针是体现C语言强大功能的灵魂,很多人对指针的用法总是很模糊,特别是什么时候该对指针分配空间,什么时候只需要定义下就行了。本文以一个小例子说明与指针有关的声明,定义,以及分配的问题。1.简单指针类型我们以char* 为例,在程序中我定义一个char*型指针pString; char* pString = NULL; pString = "yes, pString"; printf(pString); 程序输出结果:yes, pString然后我们定义另外一个char*型指针并给它分配空间,并初始化; char* qString = new char[6]; qString
阅读全文
摘要:希尔(Shell)排序是插入排序的扩展,它允许非相邻的数据项进行交换来提高执行效率。先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成(n除以d1)个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。该方法实质上是一种分组插入方法。例如:初始:d=5 49 38 65 97 76 13 27 49 55 04 49 13 |-------------------| 38 27 |-
阅读全文
摘要:冒泡排序是我学习的最早的排序算法。它很简单:遍历文件,如果临近的两个元素的顺序不对,那么就将两者交换,重复这样的操作直到整个文件排好序。一种实现算法:#include <iostream>#include <stdlib.h>using namespace std;template <typename Item>void compexch(Item &A,Item &B){ if (B<A) exch(A,B);}template <typename Item>void bubble(Item a[], int l, int
阅读全文
摘要:插入排序 算法思路:和桥牌中类似,每次只考虑一张牌,将新来的牌插入已经排好序的牌中的适当的位置中。在计算机应用中,为了插入新数据,先将较大的数据项一个个向右移动,然后将新数据插入空位中。和选择排序算法一样,排序过程中当前数据项的左边是排好的,不过它们不是处于最后的位置上,因为之后它们可能还需要进行移动来为更小的数据腾出空间。当索引移到最右边时,数组就完全排序好了。一个高效的插入排序的实现:#include <iostream>#include <stdlib.h>using namespace std;template <typename Item>void
阅读全文
摘要:从今天开始好好研究下排序算法,每一种排序算法都实现并分析。排序的基本知识:文件的排序,这些文件包括数据项(item)和键(key),键是数据项的一个小部分,用于控制排序。排序算法的目的是重新组合数据项,使其键根据一些已经定义好的排序规则整齐排列。如果被排序的文件适合放在内存中,则排序算法被称为内部排序,从磁盘中对文件进行排序,称之为外部排序。首先介绍的是一种最简单的排序算法。选择排序 算法步骤:首先选出数组中最小的项,将它和数组的第一个成员交换(假如按照升序排列),然后选出次小的项,将其与第二个成员交换。按照这种思路一直做下去,直到整个数组排列完成。实现源代码:#include <ios
阅读全文

浙公网安备 33010602011771号