基于选择排序方法的类模板设计与实现c课程设计(编辑修改稿)内容摘要:
late class Type void SortType::tree_select_sort(Type arr[],int n) //树形选择排序 5 { Type tree[M]。 // 树 int baseSize。 // 当 n是 2 的幂次时 ,baseSize 是 n, 当 n不是时 ,baseSize 是大于n 的最小的 2 的幂次 // 就是构造成满二叉树的最下层的大小,即叶子数 int i。 Type max。 // 最大值 int maxIndex。 // 最大数的下标 int treeSize。 // 最终这棵树会达到的大小 baseSize = 1。 while (baseSize n) { baseSize *= 2。 } treeSize = baseSize * 2 1。 //满二叉树的所有结点个数等于叶子数的 2 倍减一 for (i = 0。 i n。 i++) // 从数组的后面部分开始填充 , 不使用 tree[0] { tree[treeSize i] = arr[i]。 } for (。 i baseSize。 i++) // 用 MIN_VALUE 填充 tree,直到一共有 baseSize 个 { tree[treeSize i] = MIN_VALUE。 } // 构造一棵树 for (i = treeSize。 i 1。 i = 2) { // 以 arr[i]和 arr[i + 1]为子结点的数的根是 arr[i]和 arr[i + 1]中的较大者 tree[i / 2] = (tree[i] tree[i 1] ? tree[i] : tree[i 1])。 6 } n = n 1。 //此时的 n 表示当前 tree[1]应该放到 arr 中的位置 // 不断把树中值为最大值的结点移走 ,直到 n 的值为 1 while (n != 1) { max = tree[1]。 arr[n] = max。 maxIndex = treeSize。 // 在叶子上找到最大值对应的下标 while (tree[maxIndex] != max) { maxIndex。 } tree[maxIndex] = MIN_VALUE。 // 沿着叶子上的结点到根的路径更新 while (maxIndex 1) // 当结点还有父结点时 { if (maxIndex % 2 == 0) // 如果值为最大值的结点是左子结点 { // 用子结点中较大值代替父结点 tree[maxIndex / 2] = (tree[maxIndex] tree[maxIndex + 1] ? tree[maxIndex] : tree[maxIndex + 1])。 } else // 如果不是左子结点 { // 用子结点中较大值代替父结点 tree[maxIndex / 2] = (tree[maxIndex] tree[maxIndex 1] ? tree[maxIndex] : tree[maxIndex 1])。 7 } maxIndex /= 2。 // 继续处理父结点 } } } template class Type void SortType::AdjustTree(Type ar[],int k,int n) //调整堆 { int i,j。 i=k。 j=2*i。 //arrau[j]是 array[i]的左孩子 Type temp=array[i]。 while(j=n) {if(jnamp。 amp。 array[j]array[j+1]) //若有孩子较大,把 j 指向右孩子 j=j+1。 if(temparray[j]) { array[i]=array[j]。 //array[j]调整到双亲结点 i=j。 j=2*i。 } else break。 } array[i]=temp。 } template class Type void SortType::HeapSort(Type ar[]) //堆排序 { int i。 8 Type t。 for(i=len/2。 i=1。 i) //循环建立初始堆 AdjustTree(array,i,len)。 for(i=len。 i=2。 i) //进行 n1 次循环,完成堆排序 {t=array[i]。 array[i]=array[1]。 array[1]=t。 AdjustTree(array,1,i1)。 } } templateclass Type void SortType::write() //输入数组 { int i,l。 printf(请输入数组长度 :)。 scanf(%d,amp。 l)。 len=l。 printf(请输入数组元素 :\n)。 for(i=1。 i=l。 i++) cinarray[i]。 } templateclass Type void SortType::print() //输出数组 {int i。 printf(排序后的数组为 :\n)。 for(i=1。 i=len。 i++) coutarray[i]。 coutendl。 } 9 在类的成员函数实现过程中, 系统会自动为类产生构造函数, 类的构造函数自动 调用,为 类 动态分配了内存空间 , 整个调用过程中完全是由系统内部完成。 成员函数对成员变量进行操作, 实现排序功能,通过 for( ) 循环,实现输入输出数组元素的功能。 主函数设计 在程序的主函数部分,选择了 分别以 int、 char 和 float 型为数据类型的对象作为 实际例子来验证算法。 首先,选择数据类型 ; 然后,通过 write( ) 函数对成员变量数组 array[ ] 进行赋值,通过 swich()。基于选择排序方法的类模板设计与实现c课程设计(编辑修改稿)
相关推荐
主持人按 抢答开始 键,会有提示音,并立刻进入抢答倒计时(预设 15s抢答时间),如有选手抢答,会有提示音,并会显示其号数并 立刻进入回答倒计时(预设 10s 抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。 倒数时间到小于 5s 会每秒响一下提示音。 如倒计时期间,主持人想停止倒计时可以随时按 停止 按键,系统会自动进入准备 状态 , 等待主持人按 抢答开始 进入下次抢答计时。
主要特点是资源丰富、性能好、高速处理、价格低、适合工业环境应用、混合信号处理。 根据设计的要求以及单片机自身特点,山东科技大学学士学位论文 通用控制平台设计方案 10 从 C8051F 家族中选择 C8051F020[8]、 C8051F350[9]、 C8051F340[10]这三个型号的单片机作为硬件平台的核心。 C8051F020 单片机主要资源为:模拟外设部分,有 8 路 12
许多领域,所以寻找出实际而有效的算法就显得比较重要了。 但是遗憾的 是,计算复杂性理论给予我们的结论却是,这种可能性尚属未知。 TSP的应用与价值 TSP 在现实生活中有很多应用。 直观上,最普通的 TSP的运用莫过于找出旅行商为遍历每个地理位置上的点的顺序,使他所经历的路径最短。 了解了对每个城市访问一次的最优旅行路径能够为旅行节约很多潜在的时间。 对提到的实例
5 4( ) ( )( ) ( )xyf a c a a a c a af a c a a a c a a *****本科毕业论文(设计) 第 9页 共 28页 Gx= Gy= Gx 对于垂直边缘响应最大,而 Gy 对于水平边缘响应最大,从卷积模板可以看出,这一算子把重点放在接近与模板中心的像素点。 (3) Laplace 算子 对于阶跃状边缘
主要实现在地面的移动,可实现遇障碍物自动转弯、一定时间间隔原地回转、机翼的旋转。 第二章 玩具飞机外壳及结构设计 玩具外壳、机械传动系统是构成玩具飞机的二个主要部分。 玩具外壳不论在南京工业职业技术学院 毕业论文 5 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 功能使用、产品造型
chieve zerovoltage switching power transistor . This is a direction of III modern power electronics technology development. In this paper, the subject of design a viable PSZVSPWM soft switching, and