排序
tux~
这个作者很懒,什么都没留下…
展开
-
排序对数器
不稳定。建立大根堆的时候就已经不稳定了。![avatar](data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBaRXhpZgAATU0AKgAAAAgABQMBAAUAAAABAAAASgMDAAEAAAABAAAAAFEQAAEAAAABAQAAAFERAAQAAAABAAAOxFESAAQAAAABAAAOxAAAAAAAAYagA...原创 2020-04-14 08:23:47 · 94 阅读 · 0 评论 -
05快速排序(不稳定)
在一个序列中用随机数找一个位置,将这个位置同序列中最后一个位置交换,以这个数为哨兵,将序列分为三个区:小于哨兵、等于哨兵、大于哨兵。再分别将小于哨兵和大于哨兵的区域递归分配。代码分为partition部分和quicksort部分。partition部分分为两个部分,第一个是分区,也就是小于哨兵、等于哨兵和大于哨兵,第二个有个swap,什么意思呢?我用了a[r]当哨兵,所以x的位置一直都没动的,最...原创 2020-04-14 08:21:42 · 53468 阅读 · 0 评论 -
03插入排序(稳定).md
一个排好的序列,每次直接扩进来一个数,从右往左,直到满足序列要求即可。所以排序的顺序是从左到右,比较的顺序是从右到左。稳定性:稳定,插入的时候相等的不插就稳定了时间复杂度:最差O(n^2),最好O(n)空间复杂的:O(1)当数据本身有序的时候插入排序的效率甚至好于O(nlogn)的,所以工程上还是有人用的。第一个i表示,i前面的元素都是排好序的void insert(vector&l...原创 2020-04-14 08:01:22 · 145 阅读 · 0 评论 -
02选择排序(不稳定)
用哨兵记住值最大的位置,和最右边的换位置。排序的顺序是从右到左,找最大数的时候是从左到右。稳定性:不稳定。5225,a[0]和a[2]换的时候就不稳定了。时间复杂度:稳定的O(n^2)空间复杂的:稳定的O(1)对数器已证bool select(vector<int> &a){ int n = a.size(); if (n<0) ...原创 2020-04-14 08:00:51 · 102 阅读 · 0 评论 -
01.冒泡(稳定)
从左至右来回换,最大的数冒泡最右侧,所以第一个for就是确定最右侧的边界,第二个for就是来回换,换到最大的数为止。稳定性:稳定时间复杂度:稳定的O(n^2)空间复杂的:稳定的O(1)对数器已证。bool bubble(vector<int> &a){ int n = a.size(); if (n<0) return fals...原创 2020-04-14 07:59:49 · 89 阅读 · 0 评论