ImageVerifierCode 换一换
格式:DOCX , 页数:49 ,大小:1.03MB ,
资源ID:2609363      下载积分:12 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2609363.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(数据结构优秀课程设计快速排序.docx)为本站上传会员【人****来】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

数据结构优秀课程设计快速排序.docx

1、 数据结构课程设计汇报 快速排序详析 专业 物联网工程 学生姓名 方振华 班级 152 学号 指导老师 刘 骞 完成日期 12月22日 目 录 一、介绍 1 二、算法说明 1 三、测试结果 7 四、分析和探讨 9 五、数据异常测试案例 15 六、小结 17 七、参考文件 18 八、源程序清单 18 快速排序详析 一、 介绍 排序

2、是计算机程序设计中常见数据处理操作。经过一学期数据结构学习,我们学到很多个排序方法,如插入排序、交换排序、选择排序、归并排序、技术排序等。经过分析和对比,我们总结出一个快速排序优化版本,并对其设计思想和具体实现进行详解。 二、 算法说明 1、多种排序算法方法性能比较 图1:多种排序算法方法性能比较 (1)就时间性能而言,快速排序,堆排序和归并排序全部有很好时间性能。相对而言,快速排序速度最快,不过快速排序在最坏情况下,时间性能达成了O(n^2),不如堆排序和归并排序快。 (2)就空间性能而言,直接插入排序,冒泡排序,简单选择排序,堆排序要求辅助空间比较小。其中直接插入排序,冒

3、泡排序,简单选择排序比较简单,轻易实现,但时间性能较差。 快速排序是一个有效排序算法。即使算法在最坏情况下运行时O(n^2),但因为平均运行时间为O(nlogn),而且在内存使用、程序实现复杂性上表现优异,尤其是对快速排序算法进行随机化可能,使得快速排序在通常情况下是最实用排序方法之一。快速排序被认为是目前最优异内部排序方法,其基础思想是经过一趟排序将待排统计分割成独立两部分,其中一部分统计关键词比另一部分统计关键词小,则可分别对这两部分统计进行排序,以达成整个序列有序。 2、步骤 快速排序基础算法Quicksort(S)由以下4个步骤组成: (1).假如S中元素数目为0或一,则返回。

4、 (2).选择S中任意一个元素v,v叫做支点(Pivot)。 (3).将S-{v}(剩下元素在S中)分成两个分开部分。全部小于v元素和全部大于v元素。 (4).依次返回Quicksort(L),v和Quicksort结果 基础快速排序算法能够应用递归实现,关键细节包含支点选择和怎样分组。该算法许可把任何元素作为支点。支点把数组分为两组,图2展示了算法基础过程。 图2:算法基础过程 3、分析 最好情况: 快速排序最好情况是支点把集合分成两个相同大小子集而且在递归每个阶段全部这么划分。然后就有了两个通常大小递归调用和线性分组开销。在这种情况下运行时间复杂度是O(nlog2

5、n)。 最坏情况: 假设在每一步递归调用中支点全部恰好是最小元素。这么小元素集合L就是空而大元素集合R拥有除了支点以外全部元素。 设T(N)是对N各元素惊醒快速排序所需运行时间按并假设对0或1各元 素排序时间刚好是1个时间单位。那么对因为N》1当每次全部运气很差地最 小元素作为支点得到原型时间满足T(N)=T(N-1)+N.即对N各项进行排 序时间等于递归排序大元素子集中N-1各项所需要时间加上进行分组 N个单位开销。最终得出T(N)=T(1)+2+3+…+N=N(N+1)/2=O(N^2) 支点选择: 错误方法:比较常见不明智选择就是把第一个元素作为支点。但假如输入是已经

6、预先排过序,或是倒序,该支点给出分组就很糟,因为它是一个末端元素;而且这种情况会在迭代中继续出现,会以O(N^2)时间复杂度而告终,所以选择第一个元素作为支点不是好策略。 中位选择: 把中间元素即待排序序列中间位置元素作为支点是合理选择。当输入已经排过序时这种选择在每次递归调用中全部会给出理想支点。 中值划分: 在上诉选择中使用中间值作为支点能够消除非随机输入时出现退化情况。但这是一个消极选择,就是说仅仅是试图避免一个坏支点而并没有去尝试选择一个愈加好支点。中值划分是一个选择比平均情况愈加好支点尝试。在中值划分中,一个比较简单而有效策略是选择待排序列第一个、中间一个和最好一个统

7、计这3个值中值作为支点。一样道理,也能够从待排序列中等距离地选择5各值,并将这5各值中值作为支点。 4、 程序设计 本试验目标是设计并实现一个快速排序Quicksort优化版本,而且比较在下列组合情况下算法性能表现 (1) cutoff值从0~20。Cutoff值作用是只有当数组长度小于等于这个值时才使用另一个简单排序方法对其排序不然使用Quicksort算法排序。 (2) 选定支点方法分别是“第一个元素”“三个元素中值”“五个元素中值”。 程序关键由6部分组成,分别是: (1) 程序入口main函数; (2) Quicksort,快速排序算法实现部分;

8、3) MedianOf3,选择三个值中值作为中点; (4) MedianOf5,选择五个值中点作为支点; (5) Swap,简单地交换两个元素值; (6) Insertion,在数组长度小于cutoff值时使用插入排序来替换快速排序。 三、 测试结果 改完相关错误后运行代码,运行结果(图4所表示),在相关文件中新建文本文件,文件命名为”input.txt“。在文本文件中,打入输入数据,得出下列截图(图)。 图三:建立input并输入 回到程序,程序运行。 图四:程序运行 输入数据并确定。 图五:程序运行完成 查看output文件。 四、 分析和探讨

9、关键函数分析: Main函数: int main() { int i, group = 0, numbOFelements, elements, Amount; int Array[10000]; int cutoff = 0; FILE *InputPTR, *OutputPTR; /* input和output文件指针 */ InputPTR = fopen("input.txt", "r+"); OutputPTR = fopen("output.txt", "w+"); if (InputPTR == NULL)

10、 /* 检验input文件是否存在 */ { W++; InitGameBoard(); } putin(); if ((median != 1) && (median != 3) && (median != 5)) { N++; putin(); } start = GetTickCount(); Amount = fscanf(InputPTR, "%d", &numbOFelements); /* 读取每次迭代元素个数 */ while (Amount != EOF) /*

11、当读到不是文件末尾 */ { start1 = GetTickCount(); group++; fprintf(OutputPTR, "Case number: %d\nNumber of elements: %d\n", group, numbOFelements); /*输出格式 */ for (i = 0;i

12、R); } fgetc(InputPTR); QuickSort(Array, 0, numbOFelements - 1, cutoff, median); /*给数组排序 */ for (i = 0;i

13、时间为:%d ms ", tim1); tim = tim1+tim; Amount = fscanf(InputPTR, "%d", &numbOFelements); fprintf(OutputPTR, "\n\n"); } fclose(InputPTR); fclose(OutputPTR); stop = GetTickCount(); InitGameBoard(); return 0; } Main函数关键内容: 打开input.txt和output.txt文件; 读入数个数n; 从文件中次序读入n个数,并放到数组中; 应用

14、Quicksort对该数组排序; 将排序后数输出到文件output.txt中; 读入下一组数个数,继续上述过程; 关闭文件。 QuickSort函数: void QuickSort(int Array[], int min, int max, int cutoff, int median) { /* median=1时使用第一个值作为支点 median=3时使用三个值中值作为支点 median=5时使用五个值中值作为支点 */ int low, high, Pivot; if ((max - min) == 0) return; /

15、 假如数组中没有元素 */ if (min + cutoff <= max && (max - min + 1) >= median) { /* 检验cutoff值是否适宜 */ if (median == 1) { Swap(&Array[min], &Array[max]); Pivot = Array[max]; } else if (median == 3) { /* 调用函数MedianOf3 */ Pivot = MedianOf3(Array, min, max); }

16、 else if (median == 5) { /*调用函数MedianOf5 */ Pivot = MedianOf5(Array, min, max); } low = min; high = max; for (; ; ) { while (Array[low] < Pivot) { /*跳过比支点小值 */ low++; } while (Array[--high] > Pivot) { /* 跳过比支点大值 */ }

17、 if (low < high) { /* 交换两个值 */ Swap(&Array[low], &Array[high]); } else { /* 假如指针重合了,则跳出循环 */ break; } } Swap(&Array[low], &Array[max]); QuickSort(Array, min, low - 1, cutoff, median); /* 分成两部分递归调用快速排序 */ QuickSort(Array, low + 1, max, cutof

18、f, median); } else { InsertionSort(Array, min, max); /* 对剩下数组进行插入排序 */ } } Quicksort函数 参数:待排数组,待排段起点位置,待排段终点位置,cutoff值,支点选择方法 If数组时空 Exit If待排数段元素个数大于等于cutoff值,且元素个数大于等于支点选择方法所要求元素个数 依据支点选择方法选择一个元素作为支点 设置low为起点值、high为终点值 While low<=high{ While low位置值小于支点值

19、 Low++ ; While high位置值大于支点值 High——; If low

20、t文件 处理方法:在特定文件夹创建input文件并输入数值保留。 2. 输入数值有误 处理方法;回到input文件输入正确数值。 六、 小结 经过这次课程设计,深入加深了我对多种排序算法认识,尤其是快速排序算法。每种排序算法全部有其不足,我们在编写程序时要用其优点。不足之处我们能够使用其它算法进行替换。从而在时间上取得愈加好效益。即使这次课程设计已经有现成代码不过我从代码中学到了部分东西,比如对文件读写操作。 以前我极少会将程序输出结果以文本格式存放起来。我认为我在数据结构这门课上还需要花很多时间,以前只学习理论知识,现在应用到实践真花费了很大力气,还需继续努力。 我同时

21、体会到了团体合作关键性,从最初查阅资料到最终程序成功运行,和其说是学习,不如说它是合作精神和毅力考验。经过这次课程设计,我们不仅学到了很多知识和技能,更关键是团体合作。 最终,在这次实训过程中,我们深刻认识到了自己在学习方面不足之处,我知道我还有太多基础思想没有真正了解,当然我们不会气馁,我们会在以后日子里努力填补我们不足。 七、 参考文件 [1]何钦铭 陈根才 数据结构课程设计 浙江大学出版社 8月 [2] 谭浩强.C程序设计(第三版).清华大学出版社,7月 [3] 严蔚敏,吴伟民.数据结构(C语言版).清华大学出版社,1997年4月 八、 源程序清单 #define _CRT

22、SECURE_NO_DEPRECATE #undef UNICODE #undef _UNICODE #include #include #include #include #include #include #include #include #define SIZE 10000 /* 数组最大容量 */ #define NameMaxLength 12 //设定用户名最大字符数为:Nam

23、eMaxLength-2 #define PsdMaxLength 10 //设定密码最大字符数 #define boxbkclr 0xfedcbd //绘制消息框和登录框专题填充颜色 #define drawFieldbkclr 0xFFFFFF //窗口区域背景填充颜色 /*----------------------------------------和算法相关函数和定义---------------------------------*/ int MedianOf3(int a[], int low, int high); int MedianOf5(int

24、a[], int low, int high); void Swap(int *a, int *b); void QuickSort(int a[], int left, int right, int cutoff, int median); void InsertionSort(int a[], int low, int high); int median; int cutoff; /*--------------------------------------和界面相关函数和定义------------------------------------*/ void Dra

25、wMsgBox(); void InitGameBoard(); void putin(); void InputName(); //输入账号 void InputPsd(); //输入密码 int xb00 = 0, xb01 = 0, xb02 = 0, xb03 = 0, xb04 = 0, xb05 = 0;//控件(按钮或输入框)位置坐标 int yb00 = 0, yb01 = 0, yb02 = 0, yb03 = 0, yb04 = 0, yb05 = 0;//控件(按钮或输入框)位置坐标 int T = 0; int W = 0; int N = 0;

26、 int start, start1, stop, stop1; int tim=0,tim1; char IptName[NameMaxLength] = { ' ',' ',' ',' ',' ',' ',' ','\0' }; char IptPsd[PsdMaxLength] = { ' ',' ',' ',' ',' ',' ',' ','\0' }; int ResponseMouse(int xb0, int yb0, int xb1, int yb1, int xb2, int yb2, int xb3, int yb3, int xb4, int yb4, int x

27、b5, int yb5) { int place = -1; MOUSEMSG m;//定义鼠标消息 while (true) { m = GetMouseMsg();//获取一条鼠标消息 if (m.uMsg == WM_LBUTTONDOWN) { if (xb0 == -1)//在绘图区域任意点击 { place = 0; break; } //单击第一个对象 if ((m.x>xb0) && (m.xyb0) && (m.y

28、ace = 1; break; } //单击第二个对象 if ((m.x>xb2) && (m.xyb2) && (m.y

29、 main() { int i, group = 0, numbOFelements, elements, Amount; int Array[10000]; int cutoff = 0; FILE *InputPTR, *OutputPTR; /* input和output文件指针 */ InputPTR = fopen("input.txt", "r+"); OutputPTR = fopen("output.txt", "w+"); if (InputPTR == NULL) /* 检验input文件是否

30、存在 */ { W++; InitGameBoard(); } putin(); if ((median != 1) && (median != 3) && (median != 5)) { N++; putin(); } start = GetTickCount(); Amount = fscanf(InputPTR, "%d", &numbOFelements); /* 读取每次迭代元素个数 */ while (Amount != EOF) /* 当读到不是文件末尾 *

31、/ { start1 = GetTickCount(); group++; fprintf(OutputPTR, "Case number: %d\nNumber of elements: %d\n", group, numbOFelements); /*输出格式 */ for (i = 0;i

32、 fgetc(InputPTR); QuickSort(Array, 0, numbOFelements - 1, cutoff, median); /*给数组排序 */ for (i = 0;i

33、 tim1); tim = tim1+tim; Amount = fscanf(InputPTR, "%d", &numbOFelements); fprintf(OutputPTR, "\n\n"); } fclose(InputPTR); fclose(OutputPTR); stop = GetTickCount(); InitGameBoard(); return 0; } /*---------------------------和算法相关函数---------------------------------------------

34、/ /******支点(pivot)选择三个值中值算法******/ int MedianOf3(int a[], int low, int high) { int mid = (low + high) / 2; /* 确定中间位置 */ if (a[low]>a[mid]) { Swap(&a[low], &a[mid]); }if (a[low]>a[high]) { Swap(&a[low], &a[high]); }if (a[mid]>a[high]) { Swap(&a[mid], &a[high])

35、 } Swap(&a[mid], &a[high]); /* 交换排序后中间元素和最终元素值 */ return a[high]; } /******支点(pivot)选择五个值中值算法******/ int MedianOf5(int a[], int low, int high) { int i, temp, j, largest; int Step; Step = (high - low) / 4; /* 设定步长为四分之一,这么便能选出五个元素 */ for (j = 0; j<4; ++j) { largest = h

36、igh - j*Step; /*每次迭代选择不一样值作为最大值 */ for (i = j + 1; i<5; ++i) { /* 比较每次选中值,用来找到最大值 */ if (a[high - i*Step]>a[largest]) { largest = high - i*Step; /* 设定新最大值 */ } } Swap(&a[high - j*Step], &a[largest]); /* 将每次找到最大值放在每次对应位置 */ } Swap(&a[high -

37、 Step - Step], &a[high]); /* 将选定支点放到最终面 */ Swap(&a[high - 3 * Step], &a[low]); return a[high]; } /******交换两个元素******/ void Swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } /******插入排序******/ void InsertionSort(int a[], int min, int max) { int j, i, temp; for (i = mi

38、n;i <= max;i++) { temp = a[i]; for (j = i;j>min && a[j - 1]>temp;j--) a[j] = a[j - 1]; a[j] = temp; } } /******快速排序******/ void QuickSort(int Array[], int min, int max, int cutoff, int median) { /* median=1时使用第一个值作为支点 median=3时使用三个值中值作为支点 median=5时使用五个值中值作为支点 */ int

39、low, high, Pivot; if ((max - min) == 0) return; /* 假如数组中没有元素 */ if (min + cutoff <= max && (max - min + 1) >= median) { /* 检验cutoff值是否适宜 */ if (median == 1) { Swap(&Array[min], &Array[max]); Pivot = Array[max]; } else if (median == 3)

40、 { /* 调用函数MedianOf3 */ Pivot = MedianOf3(Array, min, max); } else if (median == 5) { /*调用函数MedianOf5 */ Pivot = MedianOf5(Array, min, max); } low = min; high = max; for (; ; ) { while (Array[low] < Pivot) { /*跳过比支点小值 */ low++; } wh

41、ile (Array[--high] > Pivot) { /* 跳过比支点大值 */ } if (low < high) { /* 交换两个值 */ Swap(&Array[low], &Array[high]); } else { /* 假如指针重合了,则跳出循环 */ break; } } Swap(&Array[low], &Array[max]); QuickSort(Array, min, low - 1, cutoff

42、 median); /* 分成两部分递归调用快速排序 */ QuickSort(Array, low + 1, max, cutoff, median); } else { InsertionSort(Array, min, max); /* 对剩下数组进行插入排序 */ } } /*---------------------------和界面相关函数-------------------------------------------------------*/ /******按键设置******/ void InitGame

43、Board() { int choice;//点击了哪个按钮 char str_regist[] = "退出程序"; initgraph(500, 500); setorigin(0, 0);//设置绘图窗口区域左上角为逻辑坐标原点 setbkcolor(0xFFFFFF);//设置背景颜色,0xFFFFFF为白色 DrawMsgBox();//绘制开启画面上两个按钮 choice = ResponseMouse(xb00, yb00, xb01, yb01, xb02, yb02, xb03, yb03, xb04, yb04, xb05, yb05); i

44、f (choice == 1) { exit(0); } } /******结束界面******/ void DrawMsgBox() { int xb0, xb1, yb0, yb1; xb0 = xb1 = yb0 = yb1 = 0; int w = 500;//消息框宽度为w int h = 500;//消息框高度为h int btnw = 80;//按钮宽度为btnw int btnh = 30;//按钮高度为btnh char timc[6]; setlinecolor(RGB(135, 206, 250));//

45、设置线条颜色 setfillcolor(RGB(135, 206, 250));//设置填充颜色 fillroundrect((500 - w) / 2, (500 - h) / 2, (500 + w) / 2, (500 + h) / 2, 20, 20);//用颜色填充矩形 xb0 = 500 / 2 - btnw / 2;//按钮1位置坐标 yb0 = 500 / 2 - btnh / 2;//按钮1位置坐标 xb1 = 500 / 2 + btnw / 2;//按钮1位置坐标 yb1 = 500 / 2 + btnh / 2;//按钮1位置坐标 xb00

46、 xb0; xb01 = xb1; yb00 = yb0; yb01 = yb1; setlinecolor(WHITE); setfillcolor(RGB(135, 206, 250)); fillroundrect(xb0, yb0, xb1, yb1, 10, 10);//用颜色填充按钮1 setcolor(RED); setbkmode(TRANSPARENT);//设置文字输出时背景模式为透明色 settextstyle(28, 0, _T("楷体")); if (W == 1) { outtextxy(150, 150, "

47、没有找到input文件"); } else { outtextxy(100, 100, "感谢使用"); outtextxy(200, 150, "优化排序已经完成"); _itoa_s(tim, timc, 10);//数字转化为字符 outtextxy(2, 300, "所消耗总时间为:"); outtextxy(300, 300, timc); } settextstyle(18, 0, _T("楷体")); outtextxy(xb0 + 6, yb0 + 6, "退出程序"); } /******cutoff输入***

48、/ void putin() { IMAGE img; initgraph(500, 462); int xb0, xb1, xb2, xb3, xb4, xb5, yb0, yb1, yb2, yb3, yb4, yb5, x10, y10, x11, y11; xb0 = xb1 = xb2 = xb3 = xb4 = xb5 = yb0 = yb1 = yb2 = yb3 = yb4 = yb5 = x10 = y10 = x11 = y11 = 0; int choice;//点击了哪个按钮 int w = 360;//消息框宽度为w int h

49、 180;//消息框高度为h int btnw = 210;//输入框、按钮宽度为btnw int btnh = 30;//输入框、按钮高度为btnh x10 = (470 - w) / 2; y10 = (462 - h) / 2; x11 = (470 + w) / 2; y11 = (462 + h) / 2; cleardevice(); setlinecolor(boxbkclr); setfillcolor(boxbkclr); xb0 = x10 + btnw / 2; yb0 = y10 + btnh; xb1 = xb

50、0 + btnw; yb1 = yb0 + btnh; xb2 = xb0; yb2 = yb1 + btnh / 2; xb3 = xb1; yb3 = yb2 + btnh; xb4 = xb0; yb4 = yb3 + btnh / 2; xb5 = xb1; yb5 = yb4 + btnh; xb00 = xb0; xb01 = xb1; xb02 = xb2; xb03 = xb3; yb00 = yb0; yb01 = yb1; yb02 = yb2; yb03 = yb3; xb04 = xb4; xb

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服