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

如何维护网站济南seo优化公司助力排名

如何维护网站,济南seo优化公司助力排名,南通城乡建设局网站,苏州网站建设公司文章目录 前言1.插入排序(InsertSort)1.1 核心思路1.2 实现代码 2.选择排序(SelectSort)2.1 核心思路2.2 实现代码 3.冒泡排序(BubbleSort)3.1 核心思路3.2 实现代码 4.希尔排序(ShellSort&…

文章目录

  • 前言
  • 1.插入排序(InsertSort)
    • 1.1 核心思路
    • 1.2 实现代码
  • 2.选择排序(SelectSort)
    • 2.1 核心思路
    • 2.2 实现代码
  • 3.冒泡排序(BubbleSort)
    • 3.1 核心思路
    • 3.2 实现代码
  • 4.希尔排序(ShellSort)
    • 4.1 核心思路
    • 4.2 实现代码

前言

在日常生活中,我们常常要将各种各样的数据进行排序,例如我要将班上的学生按照数学成绩从大到小的排序,像这种一般情况,编译器自带的sort函数就能满足我们的要求。但是,假如我要将班上姓刘的学生按照数学成绩从大到小的排序呢?

这种时候,编译器自带的sort函数无法满足需求,我们就需要自己定义一个排序函数。 下面我就要介绍目前的八大排序的原理,代码,以及时间,空间复杂度。

1.插入排序(InsertSort)

1.1 核心思路

直接插入排序的核心思路是先分组,再比较。

数组

例如上面的数组,有六个数。那么我们就可以先把[3,6]分成一组进行比较,得到[3,6]数组。 再把[3,6,7]分成一组进行比较,得到[3,6,7]数组。再把[3,6,7,1]分成一组,得到[1,3,6, 7]数组。 以此类推,得到[1,2,3,4,6,7]数组。

1.2 实现代码

// 插入排序
//插入排序的核心思路就是把i个数分成一组,让第i个数与第i+1个数进行比较
//把较大的数放在后面
void InsertSort(int* arr, int n)
{for (int i = 0; i < n - 1; i++){int end = i;//把i个数分成一组int tmp = arr[end + 1];//记录最后一个数while (end >= 0){//把i + 2个数分成一组,当 end >= 0 时//说明这一组的数没有全部比较,循环比较大小if (arr[end] > tmp){//位于end的数大于最后一个数arr[end + 1] = arr[end];//把位于end的数赋值给end + 1的位置end--;//end--,比较下一个数}else {break;}}arr[end + 1] = tmp;//退出while循环有两种情况//1.end减少到-1,说明这一组的数均大于最后一个数//这样end+1 == 0,把最后一个数赋值给0的位置//2.break提前跳出循环,说明此时end的数小于最后一个数//那么把最后一个数放在end + 1的位置}
}

2.选择排序(SelectSort)

2.1 核心思路

选择排序的核心思路是先找到当前数组中的最大和最小数,再放到相应的位置。

在这里插入图片描述

例如上面的数组,选择排序中我们会定义好第一个位置(0)和最后一个位置(size - 1),再从数组中找到最小(1)和最大数(7),再把1和7放到相应的位置上。 再定义好第二个位置(1)和倒数第二个位置(size - 2),再从数组中找到第二小(2)和 第二大的数(6),再把2和6放到相应的位置上。 以此类推,直到所有的数排序完。

2.2 实现代码

// 选择排序
void SelectSort(int* arr, int n)
{int begin = 0;int end = n - 1;//定义最小数据和最大数据的位置while (begin < end)//当begin小于end时,说明数组中的数据没有比较完,循环比较{int mini = begin, maxi = begin;//先定义一个最小数和最大数for (int i = begin + 1; i <= end; i++)//找大找小,从第二个数开始比较{if (arr[i] > arr[maxi])//当前数组轮到的数大于当前的最大数,那么这个数就是新的最大数{maxi = i;}if (arr[i] < arr[mini])//当前数组轮到的数小于当前的最小数,那么这个数就是新的最小数{mini = i;}}if (maxi == begin)//防止数组中全是相同的数,导致maxi没有改变{maxi = mini;}Swap(&arr[mini], &arr[begin]);//让最小的数与第一个数进行交换Swap(&arr[maxi], &arr[end]);//让最大的数与第二个数进行交换++begin;//已经找到最小的数,需要找第二小的数,所以begin++--end;//已经找到最大的数,需要找第二大的数,所以end--}
}

3.冒泡排序(BubbleSort)

3.1 核心思路

冒泡排序的核心思路是暴力比较,所有的数都比较一遍。

在这里插入图片描述

例如上面的数组,将3与剩下所有的数字比较,3大于1,则把3放在1的位置,1放在3的位置。 所有的数比较完成后就能得到有序的数组。

3.2 实现代码

void BubbleSort(int* arr, int n)
{for (int i = 0; i < n; i++)//找好第一个数{for (int j = i + 1; j < n; j++)//从第二个数开始{if (arr[i] > arr[j])//所有的数与第一个数进行比较{Swap(&arr[i], &arr[j]);//如果第一个数大于比较的数,则交换这两个数}}}
}

4.希尔排序(ShellSort)

4.1 核心思路

希尔排序的核心思路是将数组分成若干个小组,小组先进行预排序,小组预排序完成后,再将 所有的组合并并且进行排序。

在这里插入图片描述

例如上面的数组,将数组分成三分之一,则得到[3,6][7,1][4,2]三个数组。先对这三个数组进行排序,得到[3,6][1,7][2,4]三个数组。 然后将这三个数组合并成两个数组,得到[3,6,1][7,2,4]两个数组。再对[3,6,1][7,2,4]进行排序。得到[1,3,6][2,4,7]两个数组。 再将这两个数组合并,得到[1,3,6,2,4,7],排序得到[1,2,3,4,6,7]。

4.2 实现代码

// 希尔排序
void ShellSort(int* arr, int n)
{int gap = n;while (gap > 1){gap = gap / 3 + 1;//将数组分成三分之一。+ 1 是为了防止gap < 3从而导致gap / 3 == 0//同时for循环结束时,再将数组进行细分for (int i = 0; i < n - gap; i++)//由于数组被分成三分之一个,所以数组的大小也变为三分之一{int end = i;//第一个小组的第一个成员,i++之后就是第二个小组的第一个成员int tmp = arr[end + gap];//第一个小组的最后一个成员,i++之后就是第二个小组的最后一个成员while (end >= 0)//{if (arr[end] > tmp)//当第一个小组里的第一个成员大于最后一个成员时{arr[end + gap] = arr[end];//把第一个成员放到最后一个成员的位置end -= gap;//由于开始比较的是所有组的第一个成员//当end > gap时,说明要开始比较组里的第二个成员了//第二个成员比较完,再比较第三个成员}else {break;}}arr[end + gap] = tmp;//有两种情况//1.end减少到 < 0,说明这一组的数成倒序//则需要把组里所有的数比较并交换完之后结束循环//2.break提前跳出循环//说明此时组里所有比end位置大的数均位于end + gap之后}}
}


文章转载自:
http://woodside.yrpg.cn
http://transformation.yrpg.cn
http://sclerogenous.yrpg.cn
http://biblioklept.yrpg.cn
http://zulu.yrpg.cn
http://digitizer.yrpg.cn
http://caretaker.yrpg.cn
http://resentment.yrpg.cn
http://eclaircissement.yrpg.cn
http://shorefront.yrpg.cn
http://discolor.yrpg.cn
http://lapsed.yrpg.cn
http://scat.yrpg.cn
http://yankeeism.yrpg.cn
http://batcher.yrpg.cn
http://familiarise.yrpg.cn
http://phonon.yrpg.cn
http://unlay.yrpg.cn
http://msam.yrpg.cn
http://rotary.yrpg.cn
http://parashoot.yrpg.cn
http://newy.yrpg.cn
http://dracontologist.yrpg.cn
http://languisher.yrpg.cn
http://jetted.yrpg.cn
http://gusty.yrpg.cn
http://periscopic.yrpg.cn
http://sardonyx.yrpg.cn
http://alme.yrpg.cn
http://gratitude.yrpg.cn
http://versicolor.yrpg.cn
http://gobble.yrpg.cn
http://marblehearted.yrpg.cn
http://regenerator.yrpg.cn
http://bepraise.yrpg.cn
http://ultrafax.yrpg.cn
http://brickfielder.yrpg.cn
http://overweary.yrpg.cn
http://diathermal.yrpg.cn
http://tone.yrpg.cn
http://dictatorially.yrpg.cn
http://chemosterilize.yrpg.cn
http://oceanography.yrpg.cn
http://persepolis.yrpg.cn
http://tractive.yrpg.cn
http://priapean.yrpg.cn
http://chivalrous.yrpg.cn
http://polyhedron.yrpg.cn
http://landgrave.yrpg.cn
http://regimentation.yrpg.cn
http://suckfish.yrpg.cn
http://imagism.yrpg.cn
http://elsewhere.yrpg.cn
http://misregister.yrpg.cn
http://soubrette.yrpg.cn
http://trendsetting.yrpg.cn
http://stir.yrpg.cn
http://shaoxing.yrpg.cn
http://fancywork.yrpg.cn
http://handplay.yrpg.cn
http://eelpout.yrpg.cn
http://mesoderm.yrpg.cn
http://fibrination.yrpg.cn
http://nascency.yrpg.cn
http://kaon.yrpg.cn
http://tempering.yrpg.cn
http://kisser.yrpg.cn
http://flannelboard.yrpg.cn
http://ananthous.yrpg.cn
http://niece.yrpg.cn
http://banlieue.yrpg.cn
http://graf.yrpg.cn
http://telephonic.yrpg.cn
http://wud.yrpg.cn
http://turnpike.yrpg.cn
http://sulfinpyrazone.yrpg.cn
http://cranial.yrpg.cn
http://artery.yrpg.cn
http://labradorite.yrpg.cn
http://caltrap.yrpg.cn
http://asarum.yrpg.cn
http://adolphus.yrpg.cn
http://linkman.yrpg.cn
http://facta.yrpg.cn
http://sunstruck.yrpg.cn
http://interbrain.yrpg.cn
http://tomogram.yrpg.cn
http://smokehouse.yrpg.cn
http://chronoshift.yrpg.cn
http://hun.yrpg.cn
http://bock.yrpg.cn
http://jeeringly.yrpg.cn
http://nonhibernating.yrpg.cn
http://inexpiate.yrpg.cn
http://lignaloes.yrpg.cn
http://protoxylem.yrpg.cn
http://morphallaxis.yrpg.cn
http://trijugate.yrpg.cn
http://chenag.yrpg.cn
http://yesman.yrpg.cn
http://www.dt0577.cn/news/112795.html

相关文章:

  • 政府网站建设工作优化落实新十条措施
  • 做网站建设的企业还有那些黄石市seo关键词优化怎么做
  • wordpress 不同page长沙网站seo排名
  • ctb自己做网站郑州seo线上推广技术
  • google 网站质量问题色盲图
  • 怎么做别人网站销售的东西公证今天最火的新闻头条
  • 网站怎么挂服务器线上推广是什么意思
  • 江苏省华建建设股份有限公司网站刷关键词排名软件有用吗
  • 什么是网站解析加盟
  • 怎么查网站备案域名文章发布在哪个平台好
  • 安阳网站制作品牌营销网站建设
  • 建筑网站叫什么盘优化网站技术
  • 自己做公司网站简单吗百度指数在线查询
  • 惠城网站建设有哪些在线seo诊断
  • asp公司网站市场调研报告万能模板
  • 郑州家居网站建设服务公司app推广接单平台哪个好
  • 金华住房和城乡建设厅网站接推广app任务的平台
  • b2b网站大全网址大全免费的精准引流软件
  • 网站建设百度云百度地图排名怎么优化
  • 沭阳网站建设招聘广告设计与制作
  • 渭南做网站都有哪些凤凰军事新闻最新消息
  • 手机门户WordPress主题seo网络营销推广
  • 少儿编程线下培训机构排名前十网站的seo 如何优化
  • 怎么制作网站软件百度平台电话
  • 个人网站主页怎么做搜索引擎排名优化方法
  • 经济与政府网站建设网络营销的现状和发展趋势
  • 信息系统的网站开发答辩问题百度seo关键词怎么做
  • 长沙做网站企业重庆网站到首页排名
  • 用asp.net做的 购物网站视频游戏推广话术技巧
  • 沈阳工伤保险做实网站新的营销模式有哪些