本文对常见的排序算法进行了总结。 常见排序算法如下: 它们都属于内部排序,也就是只考虑数据量较小仅需要使用内存的排序算法,他们之间关系如下: ???????????????????????????????内部排序???????????????????????????插入排序{直接插入排序希尔排序选择 ...
分类:
编程语言 时间:
2019-05-19 09:36:52
阅读次数:
105
一、动图演示 二、思路分析 先来了解下堆的相关概念:堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图: 同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组中就是下面这个样子 该数组从逻辑 ...
分类:
编程语言 时间:
2019-04-20 15:40:51
阅读次数:
185
八大排序,三大查找是《数据结构》当中非常基础的知识点,在这里为了复习顺带总结了一下常见的八种排序算法。常见的八大排序算法,他们之间关系如下: 他们的性能比较: 下面,利用Python分别将他们进行实现。 直接插入排序 算法思想: 直接插入排序的核心思想就是:将数组中的所有元素依次跟前面已经排好的元素 ...
分类:
编程语言 时间:
2019-04-18 15:01:46
阅读次数:
138
快速排序算法 快速排序的思想是这样的,如果要对数组区间 [p, r] 的数据进行排序,我们先选择其中任意一个数据作为 pivot(分支点),一般为区间最后一个元素。然后遍历数组,将小于 pivot 的数据放到左边,将大于 pivot 的数据放到右边。接着,我们再递归对左右两边的数据进行排序,直到区间 ...
分类:
编程语言 时间:
2019-03-27 10:41:53
阅读次数:
150
一、动图演示 二、思路分析 1. 相邻两个数两两相比,n[i]跟n[j+1]比,如果n[i]>n[j+1],则将连个数进行交换, 2. j++, 重复以上步骤,第一趟结束后,最大数就会被确定在最后一位,这就是冒泡排序又称大(小)数沉底, 3. i++,重复以上步骤,直到i=n-1结束,排序完成。 三 ...
分类:
编程语言 时间:
2019-03-25 10:33:17
阅读次数:
179
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。 本文将依次介绍上述八大排序算法。 算法 ...
分类:
编程语言 时间:
2019-03-14 01:06:02
阅读次数:
185
1.java代码 /** * ┏┓ ┏┓ * ┏┛┻━━━┛┻┓ * ┃ ┃ * ┃ ━ ┃ * ┃ ┳┛ ┗┳ ┃ * ┃ ┃ * ┃ ┻ ┃ * ┃ ┃ * ┗━┓ ┏━┛ * ┃ ┃神兽保佑 * ┃ ┃代码无BUG! * ┃ ┗━━━┓ * ┃ ┣┓ * ┃ ┏┛ * ┗┓┓┏━┳┓┏┛ * ...
分类:
编程语言 时间:
2019-02-19 17:39:45
阅读次数:
230
目的:掌握 快速排序 的 基本思想与过程、代码实现、时间复杂度 1、基本思想与过程:(分治思想,挖坑填数) (1)从数列中选择一个数作为key值; (2)将比这个数小的数全部放在它的左边,大于或等于它的数全部放在它的右边; (3)对左右两个小数列重复第二步,直至各区间只有1个数。 下面对数组【42, ...
分类:
编程语言 时间:
2018-08-30 14:58:46
阅读次数:
156
print("冒泡排序") def bubbleSort(input_list): ''' 函数说明:冒泡排序(升序) :param input_lis: 待排序列表 :return:sorted_list :升序排好的列表 ''' if len(input_list) == 0: return [... ...
分类:
编程语言 时间:
2018-08-21 21:15:40
阅读次数:
163
[TOC] 排序算法 排序算法之间的比较: 排序算法|最差时间分析| 平均时间复杂度| 稳定度| 空间复杂度 | | | | 冒泡排序| O(n^2) |O(n^2) | 稳定 |O(1) 选择排序| O(n^2) |O(n^2) |不稳定 |O(1) 插入排序| O(n^2) |O(n^2) |稳 ...
分类:
编程语言 时间:
2018-07-29 14:21:37
阅读次数:
179