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

做品牌推广用什么网站云建站

做品牌推广用什么网站,云建站,网站建设尢首先金手指,搜多多搜索引擎入口1.排序的概念及其运用 1.1排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录…

1.排序的概念及其运用

1.1排序的概念

排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。

稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。

内部排序:数据元素全部放在内存中的排序。

外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不断地在内外存之间移动数据的排序。

2.插入排序

2.1.1基本思想:

直接插入排序是一种简单的插入排序法,其基本思想是:

把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。

实际中我们玩扑克牌时,就用了插入排序的思想

2.1.2直接插入排序:

当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],array[i-2],…的排序码顺序进行比较,找到插入位置即将array[i]插入,原来位置上的元素顺序后移

2.2插入排序实现

实现思路:

2.2.1实现单次插入排序

想完成整体的插入排序,完成单次最为关键

1.从第一个元素开始,该元素可以认为已经被排序
2.取下一个元素tmp,从已排序的元素序列从后往前扫描
3.如果该元素大于tmp,则将该元素移到下一位
4.重复步骤3,直到找到已排序元素中小于等于tmp的元素
5.tem插入到该元素的后面,如果已排序所有元素都大于tmp,则将tmp插入到下标为0的位置
6.重复步骤2~5

思考:while循环的条件

当我们完成最后一次循环的时候,由于end--,致最后一次end=-1;

所以:while条件 

while (end >= 0)

//插入排序
void InsertSort(int* a, int n) {int end = 1;int tmp = a[end + 1];//取出end+1的值while (end >= 0) {if (tmp < a[end]) {a[end + 1] = a[end];end--;}else {break;}}//当end=-1,该值最小,取0位//当tmp>a[end],此时end+1取tmp值a[end+1] = tmp;
}

  2.2.2插入排序代码

时间复杂度:最坏情况下为O(N*N),此时待排序列为逆序,或者说接近逆序
      最好情况下为O(N),此时待排序列为升序,或者说接近升序。
空间复杂度:O(1)

//插入排序
void InsertSort(int* a, int n) {for (int i = 0; i < n; i++) {int end = i;int tmp = a[end + 1];//取出end+1的值while (end >= 0) {if (tmp < a[end]) {a[end + 1] = a[end];end--;}else {break;}}//当end=-1,该值最小,取0位//当tmp>a[end],此时end+1取tmp值a[end+1] = tmp;}}

3.希尔排序

希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个 组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述分组和排序的工 作。当到达=1时,所有记录在统一组内排好序

步骤:
1.先选定一个小于N的整数gap作为第一增量,然后将所有距离为gap的元素分在同一组,并对每一组的元素进行直接插入排序。然后再取一个比第一增量小的整数作为第二增量,重复上述操作…
2.当增量的大小减到1时,就相当于整个序列被分到一组,进行一次直接插入排序,排序完成。

3.1希尔排序代码

时间复杂度平均:O(N^1.3)
空间复杂度:O(1)

gap可以为<=n的任意整数,这里的gap是按照Knuth提出的方式取值的  


void ShellSort(int* a, int n) {//每次与gap+该位置的比较int gap = n;while (gap > 1) {gap = gap / 3 + 1;//gap是按照Knuth提出的方式取值的//当gap=1时,为插入排序for (size_t i = 0; i < n - gap; i++) {int end = i;int tmp = a[end + gap];while (end >= 0) {if (tmp < a[end]) {a[end + gap] = a[end];end -= gap;}else {break;}}a[end + gap] = tmp;}}
}

3.2希尔排序的特性总结:

1. 希尔排序是对直接插入排序的优化。

2. 当gap > 1时都是预排序,目的是让数组更接近于有序。当gap == 1时,数组已经接近有序的了,这样就会很快。这样整体而言,可以达到优化的效果。我们实现后可以进行性能测试的对比。

3. 希尔排序的时间复杂度不好计算,因为gap的取值方法很多,导致很难去计算,因此在好些树中给出的希尔排序的时间复杂度都不固定

4.堆排序

由于在数据结构-堆有讲解,这里就不单独拿出来讲解,但是需要注意的是排升序要建大堆,排降序建小堆,需要可以查看下方地址

【数据结构】详解堆-CSDN博客

5.选择排序

选择排序:顾名思义每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完

5.1选择排序代码

1. 直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用

2. 时间复杂度:O(N^2)

3. 空间复杂度:O(1)

void SelectSort(int* a, int n) {int begin = 0;int end = n - 1;
//首尾位置while (begin < end) {int mini = begin;//保留最大与最小值int max = end;for (int i = begin + 1; i <= end; i++) {if (a[i] > a[max]){max = i;}if (a[i] < a[mini]){mini = i;}}//避免当最大为首位置时,与最小交换,此时最大在mini位置Swap(&a[begin], &a[mini]);if (begin == max)max = mini;Swap(&a[end], &a[max]);++begin;--end;}
}

6.交换排序

基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动键值较小的记录向序列的前部移动。

 耳熟能详的是冒泡排序与快速排序

6.1 冒泡排序

//冒泡排序
void BubbleSort(int* a, int n)
{for (int j = 0; j < n; j++) {int flag = 0;//减少排序次数,如果序列为有序序列,则直接跳出循环for (int i = 0; i < n - j; i++) {if (a[i - 1] > a[i]) {Swap(&a[i - 1], &a[i]);flag = 1;}}//flag=0;说明为顺序if (flag = 0) {break;}}}

6.1.1冒泡排序的特性总结:

1. 冒泡排序是一种非常容易理解的排序

2. 时间复杂度:O(N^2)

3. 空间复杂度:O(1)


由于快排与归并排序格外重要,将单独一篇文章讲解

http://www.dinnco.com/news/78686.html

相关文章:

  • 重庆网站排名公司seo短视频网页入口引流网站
  • 经典网页设计欣赏泉州百度首页优化
  • 资金盘网站开发价格怎么免费创建自己的网站
  • 杭州做网站哪家好全网投放广告的渠道有哪些
  • 百度网站改版seo线下培训机构
  • 用vue element-ui做的网站沪深300指数
  • 网站排版教程中央电视台新闻联播
  • 网站怎样做地理位置定位网站视频播放代码
  • 中国建设银行网站登录网络营销是干嘛的
  • 网站建设好做吗网络营销策划案例
  • 微信直接转wordpressseozhun
  • 中职网站建设课件今日疫情最新数据
  • 网站上怎么做返回主页链接推广运营公司哪家好
  • 公司做网站域名归谁外贸网站建设
  • 网站测试验收品牌推广平台
  • 网站域名注册多少钱网络市场调研的五个步骤
  • 宠物网站页面设计理念营销的三个基本概念是什么
  • 网站建设用dw免费二级域名分发网站
  • 地方旅游网站怎么做四川自助seo建站
  • 茂名市人民政府门户网站建设友情链接的检查方法
  • 南宁市网站维护与推广公司以营销推广为主题的方案
  • 网站建设中 html模板自己怎么创建网站
  • 做网站 内容越多越好网店seo是什么意思
  • 本校网站建设陕西网站设计
  • 东莞阳光网站官网百度账号批发网
  • 怎么看网站是什么程序新东方教育培训机构
  • 茶叶网站源码 下载百度百度一下首页
  • 检验是否安装wordpress广州seo报价
  • 北海公司做网站万网查询
  • 网站怎么做qq授权登录界面项目推广