摘要: 堆排序属于选择排序 选择排序的基本思想: 每一趟(第i趟)在后面n-i+1个待排序的元素中选取关键字最小的元素,作为有序子序列的第i个元素,直到第 n-1趟做完,待排序元素只剩下1个,就不用再选了。 堆排序适合关键字较多的情况(n>1000) 比如:在1亿个数中选出前100个最大值? 首先使用一个大 阅读全文
posted @ 2020-07-20 20:19 Akmf's_blog 阅读(116) 评论(0) 推荐(0)
摘要: 冒泡排序属于交换排序 从前往后(从后往前)两两比较交换,第一趟可以将最小的元素交换到待排序的第一个位置(或将最大的元素交换到待排序的最后一个位置). 下一趟排序之前排好序的元素就不用再参与比较了. 最坏情况下时间复杂度是O(\(n^2\)),最好的情况是o(n),平均时间复杂度是O(\(n^2\)) 阅读全文
posted @ 2020-07-20 18:33 Akmf's_blog 阅读(109) 评论(0) 推荐(0)
摘要: 快速排序算法是一种基于交换的高效的排序算法,它采用了分治法的思想 1.基本实现 1、从数列中取出一个数作为基准数(枢轴,pivot)。 2、将数组进行划分(partition),将比基准数大的元素都移至枢轴右边,将小于等于基准数的元素都移至枢轴左边。 3、再对左右的子区间重复第二步的划分操作,直至每 阅读全文
posted @ 2020-07-20 18:24 Akmf's_blog 阅读(141) 评论(0) 推荐(0)
摘要: 选择排序即简单选择排序 最坏的时间复杂度是O(\(n^2\)),最好的时间复杂度也是O(\(n^2\)),平均时间复杂度是O(\(n^2\)) 没有用到额外的空间 所以空间复杂度是O(1) 选择排序是不稳定的 void selectionsort(vector<int> &a) { for(int 阅读全文
posted @ 2020-07-20 18:00 Akmf's_blog 阅读(160) 评论(0) 推荐(0)