
排序
排序这是基操啊,兄弟
木子小辰
这个作者很懒,什么都没留下…
展开
-
Java快速排序(冒泡排序改进版)—— 详解 + 案例 + 时间复杂度
文章目录前言原理代码实现快速排序时间复杂度前言快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。原理需求:排序前:{6, 1, 2, 7, 9, 3, 4, 5, 8}排序后:{1, 2, 3, 4, 5, 6, 7, 8, 9}原理:首先设定一个分界值,通过该分界值将数组分成左右两部分;原创 2020-12-15 22:01:32 · 507 阅读 · 0 评论 -
java归并排序(Merge Sort)—— 详解 + 案例 +时间复杂度
文章目录前言排序原理代码实现时间复杂度前言归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。排序原理需求:排序前:{8,4,5,7,1,3,6,2}排序后:{1,2,3,4,5,6,7,8}排序原理:尽可能的一组数据拆分成两个元素相等的子组,并对每一个子组继续拆分,直到拆分后的每个子组的元素个数是1为止。将相邻的两个原创 2020-12-15 18:54:06 · 7165 阅读 · 1 评论 -
java希尔排序(Shell Sort)(插入排序升级版)—— 详解讲解 + 案例
前言希尔排序是插入排序的一种,又称“缩小增量排序”,是插入排序算法的一种更高效的改进版本。前面学习插入排序的时候,我们会发现一个很不友好的事儿,如果已排序的分组元素为{2,5,7,9,10},未排序的分组元素为{1,8},那么下一个待插入元素为1,我们需要拿着1从后往前,依次和10,9,7,5,2进行交换位置,才能完成真正的插入,每次交换只能和相邻的元素交换位置。那如果我们要提高效率,直观的想法就是一次交换,能把1放到更前面的位置,比如一次交换就能把1插到2和5之间,这样一次交换1就向前走了5个位置,可原创 2020-12-15 16:39:20 · 193 阅读 · 0 评论 -
java插入排序(Insertion sort)—— 详细讲解 + 案例 + 时间复杂度
文章目录插入排序趣味介绍插入排序原理插入排序代码设计插入排序时间复杂度插入排序趣味介绍插入排序(Insertion sort)是一种简单直观且稳定的排序算法。插入排序的工作方式非常像人们排序一手扑克牌一样。开始时,我们的左手为空并且桌子上的牌面朝下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较,如下图所示:插入排序原理需求:排序前:{4,3,2,10,12,1,5,6}排序后:{1,2,3,4,5,6,1原创 2020-12-15 01:25:35 · 1706 阅读 · 1 评论 -
java选择排序(Selection Sort)——详解讲解+案例+时间复杂度
文章目录需求排序原理案例选择排序的时间复杂度分析需求排序前:{4,6,8,7,9,2,10,1}排序后:{1,2,4,5,7,8,9,10}排序原理1.每一次遍历的过程中,都假定第一个索引处的元素是最小值,和其他索引处的值依次进行比较,如果当前索引处的值大于其他某个索引处的值,则假定其他某个索引出的值为最小值,最后可以找到最小值所在的索引2.交换第一个索引处和最小值所在的索引处的值案例选择排序API设计:代码实现:package study.sort;//选择排序API,毕竟原创 2020-12-15 00:40:46 · 1170 阅读 · 2 评论 -
Java冒泡排序(Bubble Sort)——详细讲解 + 案例 + 时间复杂度
冒泡排序时间复杂度:冒泡排序的时间复杂度为O(N^2)冒泡排序原理:比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。话不多说,直接上代码:package study.sort;//冒泡排序API,毕竟真正的排序不可能只是给你一个数字数组public class Bubble { //对数组内的元素进行排序 public static void sort(原创 2020-12-14 21:50:27 · 958 阅读 · 0 评论