栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 整理笔记04

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 整理笔记04

1. 冒泡排序(Bubble Sort)

冒泡排序(Bubble Sort),是一类“交换”类排序方法,类似水中冒泡,最大的数据会沉到水底,较小的数会浮上来。很简单,以从小到大排序为例,每一趟排序将“逆序”(前一个元素比后一个元素大)相邻两个数据元素交换,这样就会将最大的元素交换到“最后”的位置,冒泡排序每趟子排序过程都会将当前“最大”元素交换到最后位置,较小的元素会渐渐排到前面。

算法描述
  • 比较相邻的元素。如果第一个比第二个大,就交换它们两个;
  • 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
  • 针对所有的元素重复以上的步骤,除了最后一个;
  • 重复步骤1~3,直到排序完成。

动图演示

 自理解:

排序开始

第一轮 两两比较开始,前比后大,则调换

 

 

 

 

 

 

 

 

 

 

 

 

 

第一轮总结:

      1 经过第一轮从左到右两两比较,最大的数被推到了最后的位置

      2.那么接下来的排序则不需要遍历到最后一位,因为最大的1个值已经被排到了最后

第二轮排序开始: 图略

第二轮总结:

         1. 由于不考虑已经排序好的128,第二轮已经将除最后一位之前(leng-1-1)的数组中最大值交换到了最后位置
2. 那么接下来的排序则不需要遍历到最后2位,因为最大的2个值已经被排到了最后

第三轮排序开始:略

第四轮排序开始:略

第五轮排序开始:略

 

代码实现

 

算法分析

 

2. 简单选择排序(Selection Sort)

简单选择排序很直观,直接从待排序列表中找出最小(或最大)的元素放到有序序列中,直到待排序列表中的元素被选择完为止。

算法描述

第一趟,从 n 个元素中找出关键字最小的元素与第一个元素交换;

第二趟,在从第二个元素开始的 n-1 个元素中再选出关键字最小的元素与第二个元素交换;

如此,第 k 趟,则从第 k 个元素开始的 n-k+1 个元素中选出关键字最小的元素与第 k 个元素交换,直到整个序列按关键字有序。

动图演示

代码实现

 

 

3. 直接插入排序(Insertion Sort)

从小到大排列,从第二个元素开始,将后面的元素插入到已经按顺序排好的序列中

算法描述

一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:

  • 从第一个元素开始,该元素可以认为已经被排序;
  • 取出下一个元素,在已经排序的元素序列中从后向前扫描;
  • 如果该元素(已排序)大于新元素,将该元素移到下一位置;
  • 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
  • 将新元素插入到该位置后;
  • 重复步骤2~5。
动图演示

 代码实现

 

 

6. 快速排序(Quick Sort)

快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。

算法描述

快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:

  • 从数列中挑出一个元素,称为 “基准”(pivot);
  • 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;
  • 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

动图演示

代码实现

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995676.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号