摘要: 1.问题:设计一个数据结构,能够有序存储一组整数,便于我们查找,类似与STL中的set集合 集合建立时,传入两个参数,一个是maxNumbers,表示集合元素的最大个数,另一个是maxValue,表示集合元素的范围,所有元素都小于maxValue,maxValue会被用作哨兵。 在后面的程序中,虽然设置了默认值INT_MAX,但最好不要使用,因为它可能会使程序效率很低,特别是位图法中2.实现 2.1采用STL中的set模板实现,在实际编程中完全可以直接使用set集,这里为了与后面的实现和测试保持一致,对set进行了封装。封装类IntSetSTL如下: 1 class IntSetSTL ... 阅读全文
posted @ 2012-09-09 19:05 dandingyy 阅读(547) 评论(0) 推荐(0) 编辑
摘要: 1.问题 抽象后的问题如下:输入两个整数m和n,(m < n).输出0~n-1范围内的m个随机整数的有序列表,不允许重复。 也就是说,要对0~n-1范围内的数字进行选择,每个数字被选中的概率相等. 有两点要注意:不允许重复,结果有序;2.解决方案 2.1已有知识 利用库函数<stdlib.h>中的rand()函数可以产生0到RAND_MAX范围内的随机整数。 RAND_MAX是在前面头文件中定义的宏,具体大小与实现有关,至少为32767(2^15-1). 一般32位机,int型为4字节,故RAND_MAX大小为2147483647(2^31-1). 两个相关函数: 产生... 阅读全文
posted @ 2012-09-09 19:04 dandingyy 阅读(1975) 评论(0) 推荐(1) 编辑
摘要: 这部分主要讲述排序算法,先给出两个库函数排序:C库函数<stdlib.h>: void qsort ( void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );如:1 int values[] = { 40, 10, 100, 90, 20, 25 };2 3 int compare (const void * a, const void * b)4 {5 return ( *(int*)a - *(int*)b );6 }7 ////////////// 阅读全文
posted @ 2012-09-09 15:33 dandingyy 阅读(1068) 评论(0) 推荐(0) 编辑