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

网店设计英文如何优化培训方式

网店设计英文,如何优化培训方式,seo自然排名关键词来源的优缺点,如何做网站的的关键词简介:每一趟选择最小或最大的一个,排在前面或后面。主要右简单选择排序和堆排序 一、简单选择排序 1.1简介: 每趟选择最小的,放在前面,一次类推,代码思想:两个循环,外循环是趟数&a…

简介:每一趟选择最小或最大的一个,排在前面或后面。主要右简单选择排序和堆排序

一、简单选择排序

1.1简介:

        每趟选择最小的,放在前面,一次类推,代码思想:两个循环,外循环是趟数,内循环是选择最小下标,最后进行交换值,达到排序的目的。

        时间复杂度:O(n^{2})

        空间复杂度:O(1)

        稳定性:不稳定,交换时,可能与另一个关键字相同的位置发生改变,

        适用性:顺序表,链表都可以

        比较次数与初始序列无关:基数排序、简单选择排序,折半插入排序

1.2代码:

#include <stdio.h>
void swap(int *a,int *b)
{int temp=(*a);(*a)=(*b);(*b)=temp;
}
void SelectSort(int *a,int n)
{int i,j;for(i=0;i<n-1;i++)//趟数 {int min=i;for(j=i+1;j<n;j++)//查找本趟中最小的一个位置,更新min {if(a[j]<a[min])min=j;}//如果min跟开始不同,则交换位置 if(min!=i) swap(&a[min],&a[i]);}
}
int main()
{int a[6]={5,6,8,9,1,2};SelectSort(a,6);PrintSort(a,6);return 0;} 

二、堆排序

1.1简介:

        堆分为大根堆和小根堆。大根堆为:逻辑上,是个二叉树,给一维数组按层次遍历,弄成二叉树,然后大根堆是每个子树的根都比左右孩子大。同理小根堆每个子树的根都比左右孩子小。

1.1.1.大小根堆堆排序
  1. 堆调整,即从最后一个非叶子结点开始,自下而上,自右而左,以非叶子结点为根,在其树中找最大的,作为根,然后调整,最后调整到整个树的根后,再整体看是否需要再调整,最后所有的根都是其所在树的最大结点为止。
  2. 给最大值沉底。初始化调整完,就给第一个元素和最后一个元素互换,此时给最大值换到了最后面,下次再大根堆调整就不带上这个最大值了,每次调整完,互换后,长度减1个。

1.1.2.根堆的插入和删除

        插入的新元素要放在表尾,然后再根据大根堆或小根堆原则,进行堆调整即可。

        在堆中删除元素,直接删除,然后用堆尾的元素补到删除位置处,随后再根据大根堆或小根堆原则,进行堆调整即可。

1.1.3.性能

        时间复杂度:O(nlog_2{n})

        空间复杂度:O(1)

        稳定性:不稳定,可能给后面相同关键字调整到前面,相对位置发生改变

        选择性:遇到选出前多少个元素的,算法选择堆排序最优。

1.2代码:

1.2.1.初始化大根堆代码
//整体大根堆初始化
void BulidMaxHeap(int *a,int len)
{int i;for(i=len/2;i>0;--i)//从最后一个非叶子结点开始,依次往前遍历,每次遍历的时候进行堆调整 {HeadAdjust(a,i,len); }
}
//大根堆调整
void HeadAdjust(int *a,int k,int len)
{a[0]=a[k];//a[0]存储原来k的值 int i;for(i=2*k;i<=len;i=i*2)//判断以k为根的两个孩子谁打 {if(i<len && a[i]<a[i+1])i++;//为了防止原a[k]乱跑,拿a[0]进行比较if(a[0]>=a[i]) break; //让根与孩子比较,如果根大于孩子,则符合大根堆 else//不符合的话 {a[k]=a[i];//让大的孩子,赋值给根,覆盖掉 k=i;	 //然后给原根的坐标挪到孩子处, } 	}	a[k]=a[0];//原根的坐标挪到孩子处,进入第二轮循环,i=i*2,新的堆看是否符合大根堆 
} 
1.2.2.大根堆排序
void HeadSort(int *a,int len)
{BulidMaxHeap(a,len);//初始化大根堆//排序int i;for(i=len;i>0;--i){swap(&a[1],&a[i]);HeadAdjust(a,1,i-1);//交换后最大值沉底,再进行大根堆调整时,不需要计算最后一个了所以长度为i-1;
} 

1.3.总代码:
 

#include <stdio.h>
//打印大根堆,从下标1打印,0处为哨兵,存储原二叉树,根的值
void  PrintSort(int *a,int n)
{int i;for(i=1;i<n;i++){printf("%d ",a[i]);}printf("\n");
}
//交换
void swap(int *a,int *b)
{int temp=(*a);(*a)=(*b);(*b)=temp;
}
//堆排序 
//整体大根堆初始化
void BulidMaxHeap(int *a,int len)
{int i;for(i=len/2;i>0;--i)//从最后一个非叶子结点开始,依次往前遍历,每次遍历的时候进行堆调整 {HeadAdjust(a,i,len); }
}
//大根堆调整
void HeadAdjust(int *a,int k,int len)
{a[0]=a[k];//a[0]存储原来k的值 int i;for(i=2*k;i<=len;i=i*2)//判断以k为根的两个孩子谁打 {if(i<len && a[i]<a[i+1])i++;//为了防止原a[k]乱跑,拿a[0]进行比较if(a[0]>=a[i]) break; //让根与孩子比较,如果根大于孩子,则符合大根堆 else//不符合的话 {a[k]=a[i];//让大的孩子,赋值给根,覆盖掉 k=i;	 //然后给原根的坐标挪到孩子处, } 	}	a[k]=a[0];//原根的坐标挪到孩子处,进入第二轮循环,i=i*2,新的堆看是否符合大根堆 
} void HeadSort(int *a,int len)
{BulidMaxHeap(a,len);//初始化大根堆//排序int i;for(i=len;i>0;--i){swap(&a[1],&a[i]);HeadAdjust(a,1,i-1);//每次排序排一个,随后以1为根的二叉树,进行堆调整	} 
} 
int main()
{int a[9]={0,53,45,87,32,17,65,78,9};HeadSort(a,8);//数组和有效数据PrintSort(a,9);//数组和数组长度return 0;} 

http://www.khdw.cn/news/49137.html

相关文章:

  • 一起做网店一样的网站seo引擎优化软件
  • 域名怎么拿来做网站十大禁止安装应用入口
  • 企业网站排名要怎么做如何做好品牌宣传
  • 做网站公司经营范围标题优化
  • 响应式网站建设效果独立站seo实操
  • 网站建设 后台空间容量1小时快速搭建网站
  • 百度怎么搜索到自己的网站自己建网站怎么推广
  • 建平台网站费用谷歌网页版入口在线
  • 需要推销自己做网站的公司获客渠道找精准客户
  • 在线营销型网站制作seo去哪里学
  • 哈尔滨 网站建设文案代写
  • 哪个网站做相片书好全网关键词搜索工具
  • 北京网站制作seo优化好做吗
  • 电子网站建设方案百度咨询
  • 做问卷有哪些网站潍坊做网站哪家好
  • 网站网络推广重庆自动seo
  • 房产销售网站开发文档推蛙网络
  • 企业网站建设及推广研究哈尔滨网络推广
  • 网站建站网站制作公司短视频搜索优化
  • 国外设计参考网站外贸推广公司
  • 网站的网站建设公司seo的定义
  • 承包酒席可以做网站吗信息流广告投放
  • 温州制作手机网站华为seo诊断及优化分析
  • 免费创办网站百度搜索关键词排名人工优化
  • 如何查询网站域名备案seo工作前景如何
  • 如何建立自己的网络销售seo推广宣传
  • 怎么自己做网站空间重庆seo网站
  • 山东济宁做网站的公司google网站入口
  • 宿州网站建设时间三明网站seo
  • 一个人只做网站的流程银川网站seo