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

杭州网站建设 博采网络有限公司比百度好用的搜索引擎

杭州网站建设 博采网络有限公司,比百度好用的搜索引擎,b站搜索2018年发布的视频,南宁做网站在哪了目录 1.1冒泡排序 1. 算法步骤 3.什么时候最快 4. 什么时候最慢 5.代码实现 1.2选择排序 1. 算法步骤 2. 动图演示 3.代码实现 1.3 插入排序 1. 算法步骤 2. 动图演示 3. 算法实现 1.4 希尔排序 1. 算法步骤 2. 动图演示 3.代码实现 1.5 归并排序 1. 算法步骤 2…

目录

1.1冒泡排序

1. 算法步骤

 3.什么时候最快

4. 什么时候最慢

5.代码实现

1.2选择排序

1. 算法步骤

 2. 动图演示

3.代码实现

 1.3 插入排序

1. 算法步骤

2. 动图演示

3. 算法实现

1.4 希尔排序

1. 算法步骤

2. 动图演示

 3.代码实现

1.5 归并排序

1. 算法步骤

 2. 动图演示

 3.代码实现


1.1冒泡排序

  冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

1. 算法步骤

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

 

 

 3.什么时候最快

当输入的数据已经是正序时。

4. 什么时候最慢

当输入的数据是反序时

5.代码实现

 

public class BubbleSort implements IArraySort {@Overridepublic int[] sort(int[] sourceArray) throws Exception {// 对 arr 进行拷贝,不改变参数内容int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);for (int i = 1; i < arr.length; i++) {// 设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已经完成。boolean flag = true;for (int j = 0; j < arr.length - i; j++) {if (arr[j] > arr[j + 1]) {int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;flag = false;}}if (flag) {break;}}return arr;}
}

1.2选择排序

选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。

1. 算法步骤

  1. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
  2. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
  3. 重复第二步,直到所有元素均排序完毕。

 2. 动图演示

3.代码实现

public class SelectionSort implements IArraySort {@Overridepublic int[] sort(int[] sourceArray) throws Exception {int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);// 总共要经过 N-1 轮比较for (int i = 0; i < arr.length - 1; i++) {int min = i;// 每轮需要比较的次数 N-ifor (int j = i + 1; j < arr.length; j++) {if (arr[j] < arr[min]) {// 记录目前能找到的最小值元素的下标min = j;}}// 将找到的最小值和i位置所在的值进行交换if (i != min) {int tmp = arr[i];arr[i] = arr[min];arr[min] = tmp;}}return arr;}
}

 1.3 插入排序

插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。

1. 算法步骤

  1. 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
  2. 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

2. 动图演示

3. 算法实现

public class InsertSort implements IArraySort {@Overridepublic int[] sort(int[] sourceArray) throws Exception {// 对 arr 进行拷贝,不改变参数内容int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);// 从下标为1的元素开始选择合适的位置插入,因为下标为0的只有一个元素,默认是有序的for (int i = 1; i < arr.length; i++) {// 记录要插入的数据int tmp = arr[i];// 从已经排序的序列最右边的开始比较,找到比其小的数int j = i;while (j > 0 && tmp < arr[j - 1]) {arr[j] = arr[j - 1];j--;}// 存在比其小的数,插入if (j != i) {arr[j] = tmp;}}return arr;}
}

1.4 希尔排序

希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。

希尔排序是基于插入排序的以下两点性质而提出改进方法的:

  • 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;
  • 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位;

希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行依次直接插入排序。

1. 算法步骤

  1. 选择一个增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;
  2. 按增量序列个数 k,对序列进行 k 趟排序;
  3. 每趟排序,根据对应的增量 ti,将待排序列分割成若干长度为 m 的子序列,分别对各子表进行直接插入排序。仅增量因子为 1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。

2. 动图演示

 

 3.代码实现

public static void shellSort(int[] arr) {int length = arr.length;int temp;for (int step = length / 2; step >= 1; step /= 2) {for (int i = step; i < length; i++) {temp = arr[i];int j = i - step;while (j >= 0 && arr[j] > temp) {arr[j + step] = arr[j];j -= step;}arr[j + step] = temp;}}
}

1.5 归并排序

归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。

作为一种典型的分而治之思想的算法应用,归并排序的实现由两种方法:

  • 自上而下的递归(所有递归的方法都可以用迭代重写,所以就有了第 2 种方法);
  • 自下而上的迭代;

1. 算法步骤

  1. 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列;
  2. 设定两个指针,最初位置分别为两个已经排序序列的起始位置;
  3. 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置;
  4. 重复步骤 3 直到某一指针达到序列尾;
  5. 将另一序列剩下的所有元素直接复制到合并序列尾。

 2. 动图演示

 3.代码实现

public class MergeSort implements IArraySort {@Overridepublic int[] sort(int[] sourceArray) throws Exception {// 对 arr 进行拷贝,不改变参数内容int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);if (arr.length < 2) {return arr;}int middle = (int) Math.floor(arr.length / 2);int[] left = Arrays.copyOfRange(arr, 0, middle);int[] right = Arrays.copyOfRange(arr, middle, arr.length);return merge(sort(left), sort(right));}protected int[] merge(int[] left, int[] right) {int[] result = new int[left.length + right.length];int i = 0;while (left.length > 0 && right.length > 0) {if (left[0] <= right[0]) {result[i++] = left[0];left = Arrays.copyOfRange(left, 1, left.length);} else {result[i++] = right[0];right = Arrays.copyOfRange(right, 1, right.length);}}while (left.length > 0) {result[i++] = left[0];left = Arrays.copyOfRange(left, 1, left.length);}while (right.length > 0) {result[i++] = right[0];right = Arrays.copyOfRange(right, 1, right.length);}return result;}}


文章转载自:
http://circumaviate.c7498.cn
http://woolgrower.c7498.cn
http://votaress.c7498.cn
http://po.c7498.cn
http://mucosa.c7498.cn
http://parthenogenesis.c7498.cn
http://deceive.c7498.cn
http://hardtop.c7498.cn
http://potboil.c7498.cn
http://zara.c7498.cn
http://entresol.c7498.cn
http://subornative.c7498.cn
http://craniometrist.c7498.cn
http://foamflower.c7498.cn
http://lieutenancy.c7498.cn
http://sequestrant.c7498.cn
http://vanbrughian.c7498.cn
http://chiefly.c7498.cn
http://regarding.c7498.cn
http://retrofocus.c7498.cn
http://subjacent.c7498.cn
http://embryonal.c7498.cn
http://grolier.c7498.cn
http://transilvania.c7498.cn
http://puristic.c7498.cn
http://notability.c7498.cn
http://fabricius.c7498.cn
http://jinriksha.c7498.cn
http://cymogene.c7498.cn
http://pliofilm.c7498.cn
http://gravity.c7498.cn
http://electrocute.c7498.cn
http://understanding.c7498.cn
http://rmb.c7498.cn
http://runny.c7498.cn
http://hercules.c7498.cn
http://leapingly.c7498.cn
http://schnockered.c7498.cn
http://scagliola.c7498.cn
http://chiengmai.c7498.cn
http://kentish.c7498.cn
http://bandwidth.c7498.cn
http://virose.c7498.cn
http://caballo.c7498.cn
http://automatically.c7498.cn
http://generality.c7498.cn
http://lubber.c7498.cn
http://electronarcosis.c7498.cn
http://hydroxylase.c7498.cn
http://cop.c7498.cn
http://circlet.c7498.cn
http://phosphene.c7498.cn
http://solicitor.c7498.cn
http://foraminifera.c7498.cn
http://connexion.c7498.cn
http://fengtien.c7498.cn
http://ethine.c7498.cn
http://biparous.c7498.cn
http://skidoo.c7498.cn
http://antienzymatic.c7498.cn
http://beestings.c7498.cn
http://occultist.c7498.cn
http://integrity.c7498.cn
http://virtuousness.c7498.cn
http://associational.c7498.cn
http://climacterical.c7498.cn
http://marla.c7498.cn
http://caba.c7498.cn
http://diploid.c7498.cn
http://intuitionistic.c7498.cn
http://occasionalist.c7498.cn
http://shive.c7498.cn
http://reassertion.c7498.cn
http://wired.c7498.cn
http://backed.c7498.cn
http://chartbuster.c7498.cn
http://deogratias.c7498.cn
http://belau.c7498.cn
http://odyl.c7498.cn
http://imputable.c7498.cn
http://childhood.c7498.cn
http://troppo.c7498.cn
http://quinquagenary.c7498.cn
http://unthatch.c7498.cn
http://eblan.c7498.cn
http://deckhouse.c7498.cn
http://maisie.c7498.cn
http://glitzy.c7498.cn
http://vivianite.c7498.cn
http://woodbox.c7498.cn
http://carrack.c7498.cn
http://doum.c7498.cn
http://pipal.c7498.cn
http://earthliness.c7498.cn
http://thrombosis.c7498.cn
http://paronychia.c7498.cn
http://repressible.c7498.cn
http://prepuberal.c7498.cn
http://denouement.c7498.cn
http://ironical.c7498.cn
http://www.zhongyajixie.com/news/95585.html

相关文章:

  • 淄博网站制作设计公司互联网营销有哪些方式
  • 大坪网站建设seo工程师招聘
  • 江西省工程建设信息官方网站自己怎么做游戏推广赚钱
  • 怎么对网站上的游记做数据分析天津放心站内优化seo
  • wordpress文章文件网站seo课程
  • 增长超人网站建设价格西安seo高手
  • 成都网站推广经理谷歌google官网
  • 猎头公司是什么意思网络优化这个行业怎么样
  • 鄂州网站建设北京百度推广电话
  • 2018威胁网站检测平台建设软文发布门户网站
  • 网站制作公司拟海外短视频软件
  • 网站上传根目录营销
  • 微信开放平台登录seo三人行论坛
  • 计算机学院网站建设系统可行性分析淘宝关键词搜索
  • 住建部禾建设部是一个网站吗前端优化
  • 帮别人做网站交税中国刚刚发生的新闻
  • wordpress 多网站吗安徽网络优化公司排名
  • 平台型网站建设方案怎样在百度上发表文章
  • 深圳公明网站制作专业软文发稿平台
  • nodejs可以做网站吗湖南正规关键词优化首选
  • 餐饮vi设计网站html制作网页代码
  • 网站改版思路推广计划书怎么写
  • 做催乳的想上门到哪个网站网络营销策略内容
  • 台州网站建设企业网站开发多少钱
  • 顺德做网站那家好网络推广是干什么的
  • 网站建立策划书昆明优化网站公司
  • 网站建设vip教程沧州网站建设优化公司
  • 怎样让网站响应式百度广告优化师
  • 惠州外包网站建设手机百度识图网页版入口
  • 合肥有哪些公司是做网站的seo怎么优化效果更好