排序大法总结 这里的排序都是一些函数调用,默认为int类型,从小到大,第一个参数为头指针,第二个为数组长度. 直接选择排序 时间复杂度为 $$O(n^{2})$$ 是不稳定排序. 思路: 每次选出待排区间的最值,放在第一个. 冒泡排序 时间复杂度在最坏以及平均情况下下为 ),最好情况下为 ),是稳定 ...
分类:
编程语言 时间:
2019-10-18 19:05:17
阅读次数:
85
Python八大算法的实现,插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。 1、插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法 ...
分类:
编程语言 时间:
2019-09-19 21:09:41
阅读次数:
81
选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 2.1 算法描述 n个记录的直接选择排序可经 ...
分类:
编程语言 时间:
2019-08-22 00:34:50
阅读次数:
108
常见排序算法的稳定性 编辑 常见排序算法的稳定性 堆排序、快速排序、希尔排序、直接选择排序是不稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个 ...
分类:
编程语言 时间:
2019-06-30 23:10:29
阅读次数:
222
public class QuickDemo { public static void main(String[] args) { int[] arr = {5, 2, 4, 9, 7, 564, 123, 643, 8, 64, 8, 75, 6, 7968, 4648, 46};// sort( ...
分类:
编程语言 时间:
2019-06-24 16:36:15
阅读次数:
109
排序方法的演示1)插入排序(直接插入排序、希尔排序)2)交换排序(冒泡排序、快速排序)3)选择排序(直接选择排序、堆排序)4)归并排序5)分配排序(基数排序)所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定:快速排序,希尔排序,堆排序。 1.插入排序 1.1.基本思想 ...
分类:
编程语言 时间:
2019-01-20 18:49:49
阅读次数:
211
1.基本思想 直接选择排序的基本思想是将指定排序位置与其他数组元素分别对比,如果满足条件就交换元素值,注意这里区别冒泡排序,不是交换相邻元素,而是把满足条件的元素与指定的排序位置交换。 与冒泡排序相比,直接选择排序的交换次数要少很多,因此速度更快些。 2.算法示例 每一趟从待排序的数组元素中选出最小 ...
分类:
编程语言 时间:
2019-01-03 12:05:58
阅读次数:
234
直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后。 设数组为a[0…n-1]。 1. 初始时,数组全为无序区为a[0..n-1]。令i=0 2. ...
分类:
编程语言 时间:
2018-12-25 13:14:12
阅读次数:
242
1.冒泡排序 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 算法描述 1.比较相邻的元素。 ...
分类:
编程语言 时间:
2018-12-04 22:33:54
阅读次数:
241
冒泡排序 冒泡法:第一趟:相邻的两数相比,大的往下沉。最后一个元素是最大的。 第二趟:相邻的两数相比,大的往下沉。最后一个元素不用比。 时间复杂度:O(n^2) 稳定性:稳定 改进:如果一趟比较没有发生位置变换,则认为排序完成 直接选择排序 选择排序法:每一次从待排序的数据元素中选出最小(或最大)的 ...
分类:
编程语言 时间:
2018-10-27 17:09:25
阅读次数:
184