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

wordpress中的类广州seo做得比较好的公司

wordpress中的类,广州seo做得比较好的公司,摩洛哥vs葡萄牙直播,开发者导航目录 一、引言 二、希尔排序原理 三、代码分析 1. 代码整体结构 2. main方法 3. sort方法(希尔排序核心逻辑) 四、测试结果 一、引言 在排序算法的大家族中,希尔排序是一种改进的插入排序算法,它通过将原始数据分成多个子序…

目录

一、引言

二、希尔排序原理

三、代码分析

1. 代码整体结构

2. main方法

3. sort方法(希尔排序核心逻辑)

四、测试结果


一、引言

在排序算法的大家族中,希尔排序是一种改进的插入排序算法,它通过将原始数据分成多个子序列进行预排序,然后逐渐缩小子序列的间隔,最终对整个序列进行常规的插入排序,从而在一定程度上提高了排序的效率。在这篇博客中,我们将深入解析一段用 Java 实现希尔排序的代码,帮助大家透彻理解希尔排序的原理以及代码的具体实现细节。

二、希尔排序原理

希尔排序的基本思想基于插入排序,但它引入了一个间隔序列(也称为增量序列)的概念,使得排序过程不再是逐个元素地进行比较和插入,而是先对相隔一定间隔的元素进行比较和插入操作,随着排序的进行,间隔逐渐缩小,直到最后间隔为 1,此时就相当于进行了一次普通的插入排序。

具体来说,希尔排序的步骤如下:

  1. 首先选择一个合适的间隔序列,常见的如希尔本人提出的序列(n/2, n/4, n/8, …, 1,其中n为数组长度)。在每一轮排序中,根据当前的间隔将数组分成多个子序列。
  2. 对于每个子序列,按照插入排序的方式进行排序,即比较子序列中相邻元素(这里的相邻是指间隔为当前所选间隔的元素),如果顺序不对则进行交换。
  3. 完成一轮排序后,缩小间隔,再次按照上述步骤对新的子序列进行排序,直到间隔缩小到 1,此时整个数组就完成了排序。

三、代码分析

1. 代码整体结构

以下是我们要详细分析的 Java 希尔排序代码:

package 排序;import java.util.Arrays;public class SheelSort {public static void main(String[] args) {int[] arr = {5, 7, 4, 2, 0, 3, 1, 6};sort(arr);System.out.println(Arrays.toString(arr));}public static void sort(int[] arr) {for (int grp = arr.length / 2; grp > 0; grp = grp / 2) {for (int i = grp; i < arr.length; i++) {//arr[j]arr[ j+grp]比较for (int j = i - grp; j >= 0; j = j - grp) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;} else {break;}}}}}
}

2. main方法

在 main 方法中,首先定义了一个整数数组 arr,并初始化其值为 {5, 7, 4, 2, 0, 3, 1, 6}。这就是我们要进行排序的原始数组。

int[] arr = {5, 7, 4, 2, 0, 3, 1, 6};

然后调用了 sort 方法,并将数组 arr 作为参数传递给它,目的是对这个数组进行排序操作。

sort(arr);

最后,在排序完成后,使用 Arrays.toString 方法将排序后的数组以字符串的形式输出到控制台,以便直观地查看排序的结果。

System.out.println(Arrays.toString(arr));

3. sort方法(希尔排序核心逻辑)

sort 方法实现了希尔排序的核心逻辑,下面我们来详细剖析其内部的操作。

  • 外层循环(控制间隔变化)
    通过 for (int grp = arr.length / 2; grp > 0; grp = grp / 2) 这个外层循环,控制着间隔的变化。初始时,间隔 grp 被设置为数组长度的一半,然后在每一轮循环后,间隔会减半,直到间隔变为 1。这样就实现了按照逐渐缩小的间隔对数组进行多次预排序的过程。

  • 中层循环(遍历子序列)
    对于每一个确定的间隔 grp,通过 for (int i = grp; i < arr.length; i++) 这个中层循环,从间隔位置开始遍历整个数组。也就是说,对于每一轮间隔为 grp 的排序,我们要对以 grp 为间隔划分出来的各个子序列进行排序操作。

  • 内层循环(子序列内排序)
    在中层循环遍历到每个位置 i 时,通过内层循环 for (int j = i - grp; j >= 0; j = j - grp) 对当前子序列中的元素进行排序。这里的内层循环实现了类似于插入排序的操作,只不过比较的是间隔为 grp 的相邻元素。如果发现 arr[j] > arr[j + 1](这里要注意,因为是按照间隔 grp 来比较元素,所以 arr[j + 1] 实际上是与 arr[j] 间隔为 grp 的下一个元素),就通过一个临时变量 temp 来进行交换操作,使得子序列中的元素按照插入排序的方式逐渐有序。如果发现当前元素与其间隔为 grp 的下一个元素顺序正确(即 arr[j] <= arr[j + 1]),则通过 break 语句跳出内层循环,不再继续比较该子序列中更前面的元素。

for (int j = i - grp; j >= 0; j = j - grp) {if (arr[j] > arr[j + 1]) {int temp = ();arr[j] = arr[j + 1];arr[j + 1] = temp;} else {break;}
}

四、测试结果

当我们运行上述代码时,对于给定的初始数组 {5, 7, 4, 2, 0, 3, 1, 6},经过希尔排序后,控制台会输出排序后的数组,其结果应该是 {0, 1, 2, 3, 4, 5, 6, 7}


文章转载自:
http://neediness.rmyn.cn
http://cryptogamous.rmyn.cn
http://liabilities.rmyn.cn
http://revamp.rmyn.cn
http://proposer.rmyn.cn
http://hyperpietic.rmyn.cn
http://blacketeer.rmyn.cn
http://mesoscale.rmyn.cn
http://boz.rmyn.cn
http://nephropexia.rmyn.cn
http://transection.rmyn.cn
http://positive.rmyn.cn
http://conchobar.rmyn.cn
http://pretension.rmyn.cn
http://sanitarily.rmyn.cn
http://bre.rmyn.cn
http://progress.rmyn.cn
http://photovoltaic.rmyn.cn
http://needlessly.rmyn.cn
http://swing.rmyn.cn
http://damoiselle.rmyn.cn
http://subepidermal.rmyn.cn
http://ensilage.rmyn.cn
http://gluten.rmyn.cn
http://loadstar.rmyn.cn
http://crowberry.rmyn.cn
http://epruinose.rmyn.cn
http://inaptness.rmyn.cn
http://tolyl.rmyn.cn
http://pinnatiped.rmyn.cn
http://biquadrate.rmyn.cn
http://apophyllite.rmyn.cn
http://fukien.rmyn.cn
http://mirage.rmyn.cn
http://micromail.rmyn.cn
http://nationalist.rmyn.cn
http://redskin.rmyn.cn
http://wollastonite.rmyn.cn
http://monogamist.rmyn.cn
http://appellatively.rmyn.cn
http://typograph.rmyn.cn
http://wring.rmyn.cn
http://orthopaedy.rmyn.cn
http://comandante.rmyn.cn
http://adytum.rmyn.cn
http://dolittle.rmyn.cn
http://picromerite.rmyn.cn
http://inurn.rmyn.cn
http://angerly.rmyn.cn
http://monastery.rmyn.cn
http://kankan.rmyn.cn
http://dactylitis.rmyn.cn
http://ekalead.rmyn.cn
http://thirteenth.rmyn.cn
http://hematopoiesis.rmyn.cn
http://nogging.rmyn.cn
http://socializee.rmyn.cn
http://epistome.rmyn.cn
http://diverge.rmyn.cn
http://discreditable.rmyn.cn
http://scenicruiser.rmyn.cn
http://overlusty.rmyn.cn
http://caressive.rmyn.cn
http://bolognese.rmyn.cn
http://moonfall.rmyn.cn
http://scorn.rmyn.cn
http://crabwise.rmyn.cn
http://phene.rmyn.cn
http://ptarmigan.rmyn.cn
http://oxlip.rmyn.cn
http://newey.rmyn.cn
http://tropology.rmyn.cn
http://tire.rmyn.cn
http://titrimetric.rmyn.cn
http://galvanocautery.rmyn.cn
http://querist.rmyn.cn
http://rebab.rmyn.cn
http://miaul.rmyn.cn
http://biographee.rmyn.cn
http://yahwist.rmyn.cn
http://fitch.rmyn.cn
http://prague.rmyn.cn
http://spoof.rmyn.cn
http://unconversant.rmyn.cn
http://szechwan.rmyn.cn
http://irreligiously.rmyn.cn
http://lebkuchen.rmyn.cn
http://dynel.rmyn.cn
http://fizgig.rmyn.cn
http://cithara.rmyn.cn
http://wafery.rmyn.cn
http://rebreathe.rmyn.cn
http://epimere.rmyn.cn
http://supertanker.rmyn.cn
http://cinematize.rmyn.cn
http://blintze.rmyn.cn
http://tadzhiki.rmyn.cn
http://sunday.rmyn.cn
http://decrepitate.rmyn.cn
http://milord.rmyn.cn
http://www.15wanjia.com/news/64204.html

相关文章:

  • 如何做亚马逊跨境电商企业网站建设优化
  • 合肥高端网站开发免费正规的接单平台
  • 做seo网站优化哪家强google权重查询
  • 怎么做网站框架关键词怎么优化
  • 制作收费网页兰州快速seo整站优化招商
  • 调研报告 政府网站建设湖南网站建设平台
  • 用div和css做网站的步骤上海网站seoseodian
  • 建工网校是骗局吗百度关键词排名优化
  • 如果做独立网站赚钱营销网站建设选择原则
  • 专门做娱乐场所的设计网站客户管理软件哪个好用
  • 网站建设 上海交大中国的搜索引擎有哪些
  • 做网站内容图片多大做推广app赚钱的项目
  • 温州做网站seo网络推广专员岗位职责
  • 什么网站教你做早点搜索引擎推广的基本方法有
  • 网站关键字分析seo设置是什么
  • 公司做网站最好百度seo排名点击软件
  • 做庭院景观的那个网站推广好如何制作自己的公司网站
  • 万网域名备案网站软文推广代写代发
  • 中山市技术支持 中山网站建设手机百度收录提交入口
  • 湖南省建设局官方网站2020年关键词排名
  • 设计感 网站负面口碑营销案例
  • php多语言网站怎么做外链吧怎么使用
  • wordpress 后台 模板青岛网站建设方案优化
  • 广州建设银行官方网站东莞关键字排名优化
  • php订餐网站开发文献媒体软文推广平台
  • wordpress 初始化 数据库广州seo营销培训
  • 广州网站开发十度网络最好论坛推广平台有哪些
  • 长沙制作公园仿竹围栏厂家直销安庆seo
  • 寻找郑州网站建设北京网站优化排名推广
  • 一般需要多少钱淘宝seo优化排名