当前位置: 首页 > news >正文

北京多用户商城网站建设php网站建设是什么意思

北京多用户商城网站建设,php网站建设是什么意思,网站开发的形式有哪些,推广网站怎样做目录 一、简单选择排序基本思路 二、简单选择排序基本操作 三、简单选择排序算法思路 四、简单选择排序代码 1、SimpleSelectSortSentrySqQueue 五、简单选择排序算法分析 1、记录移动次数 2、记录比较次数 六、简单选择排序Linux环境编译测试 七、堆的定义 八、堆调…目录 一、简单选择排序基本思路 二、简单选择排序基本操作 三、简单选择排序算法思路 四、简单选择排序代码 1、SimpleSelectSortSentrySqQueue 五、简单选择排序算法分析 1、记录移动次数 2、记录比较次数 六、简单选择排序Linux环境编译测试 七、堆的定义 八、堆调整 1、小根堆 2、大根堆 九、堆排序的算法思路 1、调整为大根堆 2、堆调整为升序序列 十、堆排序代码 1、HeapSiftSentrySqQueue 2、HeapSortSentrySqQueue 十一、堆排序算法分析 1、最大优点 2、辅助存储空间 3、适用情况 十二、堆排序Linux环境编译测试 排序的其他相关知识点和源码分享可以参考之前的博客    《数据结构与算法基础-学习-30-插入排序之直接插入排序、二分插入排序、希尔排序》 《数据结构与算法基础-学习-31-交换排序之冒泡排序、快速排序》 一、简单选择排序基本思路 在待排序的数据中选出最大小的元素放在其最终的位置。 二、简单选择排序基本操作 1、首先通过n-1次关键字比较从n个记录中找出关键字最小的记录将它与第一个记录交换。 2、再通过n-2次比较从剩余的n-1个记录中找出关键字次小的记录将它与第二个记录交换。 3、重复上述操作共进行n-1趟排序后排序结束。 三、简单选择排序算法思路 ​ 我们还是以这个图为例来进行介绍升序排列。Min指向最小值的索引号i表示最小值需要插入的位置j表示需要比较的元素。 ​ 先将1号位的3移动到哨兵位存储最小值的实际值Min初始化为1号位j从Min加一的位置开始扫描。 ​ 发现j的2比哨兵的3小将哨兵位放上2Min记录最小索引2j继续向后扫描。 ​ 发现j的8比哨兵的2大j继续向后扫描。 ​ 发现j的5比哨兵的2大j继续向后扫描。 ​ 发现j的4比哨兵的2大j继续向后扫描。 ​ 发现j的6比哨兵的2大j继续向后扫描。 ​ 发现j的1比哨兵的2小将哨兵位放上1Min记录最小索引7所有元素已经扫描一遍已经找到最小值。 ​ 将Min和i索引所存储的元素交换这就得到最小值1了1号位不需要再扫描了i继续右移Min还是以需要扫描的第一个元素为最小值设为2j初始化为i加1等于3。 ​ 快进一下不然画的图太多了85463都比2大所以只需要右移j。 ​ 2号位不需要再扫描了i继续右移Min还是以需要扫描的第一个元素为最小值设为3j初始化为i加1等于4j开始右移。 ​ 发现j的5比哨兵的8小将哨兵位放上5Min记录最小索引4j继续向后扫描。 ​ 发现j的4比哨兵的5小将哨兵位放上4Min记录最小索引5j继续向后扫描。 ​ 发现j的6比哨兵的4大j继续向后扫描。 ​ 发现j的3比哨兵的4小将哨兵位放上3Min记录最小索引7所有元素已经扫描一遍已经找到最小值。 ​ 3号位不需要再扫描了i继续右移Min还是以需要扫描的第一个元素为最小值设为4j初始化为i加1等于5j开始右移。 ​ 发现j的4比哨兵的5小将哨兵位放上4Min记录最小索引5j继续向后扫描。 ​ 发现68比哨兵的4大所有元素已经扫描一遍已经找到最小值。 虽然数据到这里已经有序了但其实后面还需要按照前面的逻辑再把数据扫描一遍。 四、简单选择排序代码 1、SimpleSelectSortSentrySqQueue Status SimpleSelectSortSentrySqQueue(SqQueue* Queue) {JudgeAllNullPointer(Queue);if (Queue-Flag ! INT_TYPE_FLAG){return FailFlag;}QueueLenType i;QueueLenType j;int* Array (int*)(Queue-Data);QueueLenType MinIndex;for (i 1; i Queue-SqQueueLen - 1; i)//n个元素需要n-1趟才能全部排列好。{MinIndex i;Array[0] Array[i];for (j i 1; j Queue-SqQueueLen; j)//排好序的元素不需要再进行比较。{if (Array[j] Array[0])//寻找最小值{Array[0] Array[j];MinIndex j;}}if (i ! MinIndex)//判断是否交换{Array[MinIndex] Array[i];Array[i] Array[0];}}LogFormat(Debug,Simple Select Sort SqQueue OK.\n);return SuccessFlag; }五、简单选择排序算法分析 情况时间复杂度是否稳定最好O(n^2)不稳定最坏O(n^2)平均O(n^2) 1、记录移动次数 最坏是怎么算出来的呢n个元素最多只用移动n-1次数据存放到哨兵一次最小值的位置和最小值需要移动到的正确位置进行交换需要两次一共三次所以是3n - 1。 情况次数最好0最坏3n - 1 2、记录比较次数 无论待排序列处于上面状态选择排序所需进行的比较次数都相同。 n个元素需要比较n-1次可以找出最大或最小值。 找到的元素不用再比较n-1个元素需要比较n-2次可以找出最大或最小值。 也就是一共需要比较 n-1 n-2 n-3 ... 1 (n-1 1) * (n-1) / 2 (n - 1) * n / 2。  六、简单选择排序Linux环境编译测试 [gbaseczg2 Sort]$ make gcc -Wall -Wextra -O3 InsertSort.c SwapSort.c SelectSort.c MergeSort.c BucketSort.c main.c -o TestSort -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/Log/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/HashTable/include/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/SqQueue/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/SqStack/ -L /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Make/Libs/ -lPublicFunction -lLog -lSqQueue [gbaseczg2 Sort]$ ./TestSort 2023-9-8--[ Info ]--SqQueue Data : Data : [ 0 ,50 ,51 ,52 ,53 ,54 ,55 ,56 ,57 ,58 ,59 ,60 ,61 ,62 ,63 ,64 ,65 ,66 ,67 ,68 ,69 ,70 ,71 ,72 ,73 ,74 ,75 ,76 ,77 ,78 ,79 ,80 ,81 ,82 ,83 ,84 ,85 ,86 ,87 ,88 ,89 ,90 ,91 ,92 ,93 ,94 ,95 ,96 ,97 ,98 ,99 ,0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21 ,22 ,23 ,24 ,25 ,26 ,27 ,28 ,29 ,30 ,31 ,32 ,33 ,34 ,35 ,36 ,37 ,38 ,39 ,40 ,41 ,42 ,43 ,44 ,45 ,46 ,47 ,48 ,49 ] FrontIndex : 0 RearIndex : 0 SqQueueLen : 101 SqQueueMaxLen : 101 Flag : INT_TYPE_FLAG 2023-9-8--[ Info ]--Sort Function Elapsed Time : 0 s 2023-9-8--[ Info ]--SqQueue Data : Data : [ 98 ,0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21 ,22 ,23 ,24 ,25 ,26 ,27 ,28 ,29 ,30 ,31 ,32 ,33 ,34 ,35 ,36 ,37 ,38 ,39 ,40 ,41 ,42 ,43 ,44 ,45 ,46 ,47 ,48 ,49 ,50 ,51 ,52 ,53 ,54 ,55 ,56 ,57 ,58 ,59 ,60 ,61 ,62 ,63 ,64 ,65 ,66 ,67 ,68 ,69 ,70 ,71 ,72 ,73 ,74 ,75 ,76 ,77 ,78 ,79 ,80 ,81 ,82 ,83 ,84 ,85 ,86 ,87 ,88 ,89 ,90 ,91 ,92 ,93 ,94 ,95 ,96 ,97 ,98 ,99 ] FrontIndex : 0 RearIndex : 0 SqQueueLen : 101 SqQueueMaxLen : 101 Flag : INT_TYPE_FLAG 七、堆的定义 若有n个元素的序列{a1,a2,...,an}满足ai a2i 和 ai a2i1或ai a2i 和 ai a2i1则分别称为该序列为小根堆和大根堆。 堆的实质是满足如下性质的完全二叉树二叉树中任一非叶子节点均小于或大于它的孩子结点。 八、堆调整 如何再输出堆顶元素后调整剩余元素为一个新的堆 升序为例。 1、小根堆 1输出堆顶元素之后以堆中最后一个元素代替之。 2将根节点值与左右子树的根节点值进行比较并于其中小者进行交换。 3重复上述操作直至叶子节点将得到新的堆称这个从堆顶至叶子的调整过程为筛选。 2、大根堆 1以堆中最后一个元素代替之根节点的元素输出堆顶元素。 2将根节点值与左右子树的根节点值进行比较并于其中小者进行交换。 3重复上述操作直至叶子节点将得到新的堆称这个从堆顶至叶子的调整过程为筛选。 九、堆排序的算法思路 推排序的实现需要两个大的步骤一是将待排序的元素调整为大根堆或小根堆。二、堆调整为升序或降序序列。 我们这里以大根堆、升序排列为例待排元素如下 1、调整为大根堆 1我们需要想把上面的数组想象成满二叉树如下 2我们的思路是从下到上进行堆调整需要先把这个树的子树调整为大根堆上面的双亲结点才能调整成大根堆。 35和4中的最大者5和2进行交换那这个子树已经调整为大根堆。 4数组也变化了。 5接下来我们来调整这棵树。 65和8中的最大者8和3进行交换那这个子树已经调整为大根堆。 7那这整棵树就已经变成大根堆了对应的数组也变化了。 2、堆调整为升序序列 现在我们从上到下进行排序。 1第一个结点和最后一个交换位置是不是感觉出什么了最后一个元素变为最大值了变换位置之后这棵子树就不是大根堆了我们来开始调整。 25和3中的最大者5和4进行交换那这个子树已经调整为大根堆。 3刚刚Index2变化了我们看一下这颗子树是否需要调整发现就是大根堆可以不调整欧耶Index5不需要调整记得哈。 4实际数组变化如下 5第一个结点和最后一个Index4交换位置变换位置之后这棵子树就不是大根堆了我们来开始调整。 64和3中的最大者4和2进行交换那这个子树已经调整为大根堆。 7实际数组变化如下 8第一个结点和最后一个Index3交换位置变换位置之后这棵子树就不是大根堆了我们来开始调整。 9发现不需要调整本来就是大根堆完美。 10那我们交换一下第一个结点和最后一个Index2交换位置。n个元素需要调整n-1次五个元素我们已经调整了4次堆已经是升序排列了。 11实际数组变化如下 十、堆排序代码 1、HeapSiftSentrySqQueue Status HeapSiftSentrySqQueue(SqQueue* Queue, QueueLenType StartSiftIndex, QueueLenType EndSiftIndex) {JudgeAllNullPointer(Queue);QueueLenType i StartSiftIndex;QueueLenType j 2 * i;int* Array (int*)(Queue-Data);while (j EndSiftIndex)//满足的话表示有左右子树。{if (j EndSiftIndex Array[j] Array[j 1])//第一个条件成立的话表示还有右子树。如果右子树大于左子树将索引号移动到右子树上。{j;}if (Array[i] Array[j])//子树与根节点比较如果子树大进入此判断进行数据交换。{Array[0] Array[i];Array[i] Array[j];Array[j] Array[0];}i j; //移动到下一个子树的根节点。j 2 * i;//移动到下一个子树的根节点的子树。}LogFormat(Debug,Heap Sift Sentry SqQueue OK.\n);return SuccessFlag; } 2、HeapSortSentrySqQueue //需要一个哨兵也就是预留位置为的是方便通过数组计算左右子树。 Status HeapSortSentrySqQueue(SqQueue* Queue) {JudgeAllNullPointer(Queue);if (Queue-Flag ! INT_TYPE_FLAG){return FailFlag;}QueueLenType i;QueueLenType EndIndex Queue-SqQueueLen - 1;int* Array (int*)(Queue-Data);for (i EndIndex / 2; i 1; i--)//从下往上建立大根堆{HeapSiftSentrySqQueue(Queue, i, EndIndex);}//堆调整变化为升序序列从上往下进行调整。//n个元素需要调整n-1次。for (i 1; i EndIndex - 1; i){Array[0] Array[1];Array[1] Array[EndIndex - i 1];Array[EndIndex - i 1] Array[0];HeapSiftSentrySqQueue(Queue, 1, EndIndex - i);}LogFormat(Debug,Heap Sort Sentry SqQueue OK.\n);return SuccessFlag; } 十一、堆排序算法分析 情况时间复杂度是否稳定最好O(n * log2^n)不稳定最坏O(n * log2^n)平均O(n * log2^n) 1、最大优点 堆排序在最坏情况、最好情况下都是O(n * log2^n)都不会使排序处于 最优或最差的状态。 2、辅助存储空间 仅需要一个辅助空间也就是哨兵位或0号位。 3、适用情况 适用于待排序记录个数n较大的情况。 十二、堆排序Linux环境编译测试 [gbaseczg2 Sort]$ make gcc -Wall -Wextra -O3 InsertSort.c SwapSort.c SelectSort.c MergeSort.c BucketSort.c main.c -o TestSort -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/Log/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/HashTable/include/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/SqQueue/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/SqStack/ -L /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Make/Libs/ -lPublicFunction -lLog -lSqQueue [gbaseczg2 Sort]$ time ./TestSort 2023-9-8--[ Debug ]--Init SqQueue OK 2023-9-8--[ Debug ]--Enter SqQueue OK 2023-9-8--[ Debug ]--Enter SqQueue OK 2023-9-8--[ Debug ]--Enter SqQueue OK 2023-9-8--[ Debug ]--Enter SqQueue OK 2023-9-8--[ Debug ]--Enter SqQueue OK 2023-9-8--[ Debug ]--Enter SqQueue OK 2023-9-8--[ Debug ]--Enter SqQueue OK 2023-9-8--[ Debug ]--Enter SqQueue OK 2023-9-8--[ Debug ]--Enter SqQueue OK 2023-9-8--[ Debug ]--Enter SqQueue OK 2023-9-8--[ Debug ]--Enter SqQueue OK 2023-9-8--[ Info ]--SqQueue Data : Data : [ 0 ,5 ,6 ,7 ,8 ,9 ,0 ,1 ,2 ,3 ,4 ] FrontIndex : 0 RearIndex : 0 SqQueueLen : 11 SqQueueMaxLen : 11 Flag : INT_TYPE_FLAG 2023-9-8--[ Debug ]--Heap Sift Sentry SqQueue OK. 2023-9-8--[ Debug ]--Heap Sift Sentry SqQueue OK. 2023-9-8--[ Debug ]--Heap Sift Sentry SqQueue OK. 2023-9-8--[ Debug ]--Heap Sift Sentry SqQueue OK. 2023-9-8--[ Debug ]--Heap Sift Sentry SqQueue OK. 2023-9-8--[ Debug ]--Heap Sift Sentry SqQueue OK. 2023-9-8--[ Debug ]--Heap Sift Sentry SqQueue OK. 2023-9-8--[ Debug ]--Heap Sift Sentry SqQueue OK. 2023-9-8--[ Debug ]--Heap Sift Sentry SqQueue OK. 2023-9-8--[ Debug ]--Heap Sift Sentry SqQueue OK. 2023-9-8--[ Debug ]--Heap Sift Sentry SqQueue OK. 2023-9-8--[ Debug ]--Heap Sift Sentry SqQueue OK. 2023-9-8--[ Debug ]--Heap Sift Sentry SqQueue OK. 2023-9-8--[ Debug ]--Heap Sift Sentry SqQueue OK. 2023-9-8--[ Debug ]--Heap Sort Sentry SqQueue OK. 2023-9-8--[ Info ]--Sort Function Elapsed Time : 0 s 2023-9-8--[ Info ]--SqQueue Data : Data : [ 1 ,0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ] FrontIndex : 0 RearIndex : 0 SqQueueLen : 11 SqQueueMaxLen : 11 Flag : INT_TYPE_FLAG 2023-9-8--[ Debug ]--Destroy SqQueue OKreal 0m0.003s user 0m0.001s sys 0m0.001s
http://www.zqtcl.cn/news/74739/

相关文章:

  • 浙江网站建设模板网站建设公司内网网站的意义
  • 厦门seo网站关键词优推广微信怎么申请小程序
  • ppt网站模板免费网站注册免费创建网站
  • 爱游戏app下载官方网站江西最近发生的新闻
  • 论文网站建设与运营网站开发 文学
  • 装修公司网站怎么建设最好的搜索引擎
  • 织梦网站后台打不开中企建设网站
  • 计算机网站开发是什么专业一个网站主机多少钱一年
  • 公司网站维护怎么维护展示型网站搭建
  • vs手机网站开发网页制作与网站建设实战大全
  • 建网站怎么起名字天元建设集团有限公司招聘信息
  • 大丰区住房和城乡建设局网站seo关键词排名
  • 自贡公司做网站怎么样做网站代
  • 页面简单的网站模板免费下载我想自己建个网站 应该怎么做
  • 推广网站的方法有搜索引擎dw网页设计作品 成品
  • 音乐网站开发环境描述招商引资平台有哪些
  • 在什么文件中加入什么代码告诉搜索引擎蜘蛛网站地图的文件位置?sae wordpress 域名
  • 需要前置审批的网站全屏背景网站如何做到自适应
  • 济南金融行业网站开发软件外包业务
  • 手机网站用什么制作安庆网站建设价格
  • 网站建设销售简历系统更新
  • 怎样让百度收取我的网站外部asp网站 asp 内容
  • 西峡网站开发腾讯云服务器用户名
  • entware ng wordpress合肥百度关键词优化
  • 滁州网站建设梦天堂东营企业网站排名优化
  • 数据库网站建设软件怎么去建设微信网站
  • 广州市官网网站建设价格手机怎么编辑网页
  • 网站seo方案策划书汽车4s网站设计
  • 模板网站和定制网站影响排名建设一个网站大概需要多少钱
  • 手机网站案列wordpress加载不出图