排序算法
_清欢
这个作者很懒,什么都没留下…
展开
-
排序算法(五):快速排序
基本思想 在数组中选取一个数作为基准值,进行一个partition过程,将小于该数的放在左边,大于的放在右边,等于的放在中间,再对左右分别进行该操作。 时间复杂度:每次partition可以将一个数字位置确定,将数组划分为两部分,因此想要有序,理想情况每次刚好两边大小一样,则一共需要logn次partition过程,每次partition过程时间复杂度O(n),因此最好时间复杂度O(nlogn...原创 2019-10-28 13:39:06 · 231 阅读 · 0 评论 -
排序算法(四):归并排序
基本思想 归并排序(Merge Sort)是一种分而治之的思想,将大问题化解为小问题,要排序好整个数组,则将数组分为两个小数组,分别排好两个小数组,然后将排序好的数组合并。 算法描述 将数组切割为两部分 将两部分分别排序 创建一个新数组,将排序好的两部分合并 代码实现 package cn.lzx.sort; /** * @ClassNameMergeSort * @Descr...原创 2019-10-25 18:20:39 · 253 阅读 · 0 评论 -
排序算法(三):插入排序
基本思想 插入排序(Insertion Sort):将数组分为有序和无序两个部分,将无序部分的元素按照大小一一插入有序部分最终实现数组有序。 算法描述 从第一个元素开始,有序部分只有第一个元素,不需要调整 将第二个元素插入有序部分,即将第二个元素与有序部分挨个比较,逆序则交换 ......................... 循环n-1次之后,无序元素全部插入有序序列,数组有序 代码...原创 2019-10-25 16:13:11 · 101 阅读 · 0 评论 -
排序算法(二):选择排序
基本思想 选择排序(Selection Sort)是一种简单直观的排序算法。它首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 算法描述 从第一个数开始,寻找最小的数,与第一个数交换 从第二个数开始,寻找最小的数,与第二个数交换 ............. 循环...原创 2019-10-25 15:53:45 · 139 阅读 · 0 评论 -
排序算法(一):冒泡排序
基本思想 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,每次比较相邻两个元素,如果他们逆序就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 算法描述 冒泡排序算法的执行如下: 从第一个数开始,比较相邻两个数,如果逆序,则交换 当一次循环完之...原创 2019-10-25 15:29:32 · 190 阅读 · 0 评论