排序
文章平均质量分 79
C就多练
这个作者很懒,什么都没留下…
展开
-
排序算法--快速排序
前后指针法,即使用一前一后两个指针,前指针寻找比基准值小的数,如果找到,后指针先后移一位,再与前指针所指的值做交换,前指针再++;2、我们依旧设置left和right,让right从右向左走,如果找到比基准位小的数,就将其存到坑位处,那么原right处就形成了新的坑位。在前提中我们提到了, 快速排序是Hoare于1962年提出的,其基本思想为:任取待排序元素序列中 的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右 子序列中所有元素均大于基准值,原创 2024-05-04 23:25:26 · 1363 阅读 · 0 评论 -
排序算法--直接选择排序
这里我们的思路就是定义一个变量begin,作为未排序序列的第一个数,定义一个变量mini保存最小数的下标。更要命的,一次交换完,begin和end收缩,a[0]与a[10]的位置已经固定,无法再改动,导致程序越运行越错。这里每次找到最小的那个元素,将其与未排序序列的第一个元素交换,交换后最小的那个元素已经找到,再从未排序序列中找第二小的元素......直到序列完全有序。它的算法思想是每一次从待排序的。根据我们上面的分析,改动版的的代码就是一次完成最大、最小两个数的排序,实际上与一个数的排序并没有什么不同。原创 2024-05-03 23:29:24 · 1171 阅读 · 0 评论 -
排序算法--希尔排序
我们一直假设gap=3,这是因为上面的举例是10个数,这时是合适的。底层的逻辑实际上就是直接插入排序,但是与直接插入排序算法不同的一点是:其i每次的变化量是gap而不是1。希尔排序的时间复杂度不好计算,因为gap的取值方法很多,导致很难去计算,因此在好些书中给出的希尔排序的时间复杂度都不固定。从上面的过程来看,如果gap越大,能够将大的数更加快速地挪动到后面,gap越小,挪动的更加频繁,但是更有序。,直到增量缩小为1时,这次排序就是直接插入排序,因为此时基本有序,所以这次的直接插入排序效率极高。原创 2024-05-02 17:35:35 · 569 阅读 · 0 评论 -
排序算法--冒泡排序
冒泡排序,英语名是Bubble Sort,是一种最基础的交换排序。这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。交换排序:根据序列中两个值的比较结果来交换这两个数在序列中的位置,交换排序的特点是:将值较大的数向序列的尾部移动,值较小的数向序列的前部移动。外面的循环控制所有回合,内部循环是单趟排序,将最大的移到右边,如果a[i-1]比a[i]小,两数就交换。由于冒泡排序的每一轮都要遍历一遍所有的元素,轮转的次数和元素数量相当,所以时间复杂度为O(N^2)。原创 2024-05-01 23:40:18 · 378 阅读 · 0 评论 -
排序算法——直接插入排序
直接插入排序与希尔排序是插入排序的两个分支,直接插入排序是较为简单的一种排序算法,同时也是众多算法实现或优化的基石。原创 2024-05-01 22:44:26 · 644 阅读 · 1 评论