排序
池央
有趣的c++之旅
展开
-
选择排序(附动图)
直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用时间复杂度:O(N^2)空间复杂度:O(1)稳定性:不稳定。原创 2024-08-17 09:47:36 · 533 阅读 · 73 评论 -
希尔排序,详细解析(附图解)
希尔排序是一种基于插入排序的算法,通过将原始数据分成若干个子序列,然后对子序列进行插入排序,逐渐减小子序列的间隔,最后对整个序列进行一次插入排序。原创 2024-08-16 17:15:42 · 701 阅读 · 44 评论 -
直接插入排序
直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。直接插入排序像我们小时候整理扑克牌一样。每拿起一张牌,就把它插到已经排好序的牌里正确的位置。原创 2024-08-13 07:00:00 · 349 阅读 · 10 评论 -
【C语言】堆排序
建堆和堆删除中都用到了向下调整,因此掌握了向下调整,就可以完成堆排序。升序建大堆,时间复杂度O(N*logN)若升序建小堆时间复杂度是O(N^2)2. 利用堆删除思想来进行排序。所以升序建大堆,降序建小堆。原创 2024-08-01 16:44:08 · 388 阅读 · 7 评论 -
冒泡排序详解
第一趟,n个数据排序,第一个和第二个比较第一个大于第二个数据则交换位置。最坏情况交换n-1次,最大的数到序列尾部。第二趟,最大的数已经到序列尾部,只要n-1个数据排序即可,最坏情况交换(n-1)- 1次,n-1个中最大的数到序列尾部(也就是n个书中次大的数,从左往右数,到序列倒数第二个位置)。第n-1趟,排序完成。时间复杂度:O(N^2)原创 2024-08-12 07:30:00 · 148 阅读 · 2 评论