排序算法
生若直木,不语斧凿ᝰ
口红都买不起谈什么恋爱
展开
-
冒泡排序及其优化
冒泡排序:把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不必再去交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。//冒泡排序在平均和最坏情况下的时间复杂度都是O(n^2),最好情况下是O(n);void B...原创 2019-07-27 22:02:51 · 119 阅读 · 0 评论 -
快速排序及其优化
快速排序是一种以分治为基本思想的排序算法,它将待排序数组分成两个子数组,将两部分再独立地排序。快速排序最理想的情况是每次都能将序列切分成相同大小的两部分,因此切分所用的基准元素如何选择就成了影响算法性能的关键。最简单的实现就是采用相对位置固定的基准元素——一般是序列的第一个或最后一个元素。但这样往往会导致糟糕性能的出现,因为这样很容易出现很不平衡的切分序列。例如针对已经有序的序列或含有大量重...原创 2019-07-27 22:24:12 · 121 阅读 · 0 评论 -
插入排序及其优化
插入排序直接插入排序时间复杂度为O(n^2)稳定的排序元素移动是顺序的在一个数组中,将第一个元素看作排序元素序列里的唯一元素,然后用临时变量tmp首先存放第二元素,即可在数组中空第二个元素位置(即此位置可被覆盖),将第二个元素与有序序列里面唯一一个元素进行比较,根据排序条件决定元素是否需要向后移动,然后有序序列元素加一,申请空间里面存放将要插进有序序列里面的元素;void Inser...原创 2019-07-28 14:56:17 · 5717 阅读 · 5 评论 -
归并排序及其优化
思想:分治法每个递归过程涉及三个步骤 分解: 把待排序的 n 个元素的序列分解成两个子序列, 每个子序列包括 n/2 个元素. 治理: 对每个子序列分别调用归并排序_MergeSort, 进行递归操作 合并: 合并两个排好序的子序列,生成排序结果. 以数组int arr[]={2,5,4,9,7,8,3,6}进行归并排序为例说说MergeSort的过程:...原创 2019-07-28 15:44:28 · 180 阅读 · 0 评论