
算法
sy4331
这个作者很懒,什么都没留下…
展开
-
排序算法---快速排序
背景之前我们介绍的选择排序、插入排序、快速排序的时间复杂度都是O(n2),在数据量较大时效率较低。因此我们利用分治思想设计出了两种效率更高的算法:归并排序和快速排序。归并排序和快速排序的时间复杂度都是O(nlogn),且在大多数情况下,快速排序比归并排序效率更高。原理快速排序的基本思想是分治原理,举例操作如下:1. 在待排序的数组中先选择一个数作为基准值,然后遍历整个数组,将小于基准值的元素放到基准值左边,将大于基准值的元素放到右边,这样就确定了基准值最后的正确位置。2. 递归处理基准原创 2022-03-30 20:07:11 · 969 阅读 · 0 评论 -
排序算法---选择排序/插入排序/冒泡排序
选择排序原理:每次排序将最小的元素放在当前未排序队列的第一个位置,且完成一个元素排序后下次从下一个位置开始重复上述过程。void Swap(int *piData1, int *piData2){ int iTmp = 0; iTmp = *piData1; *piData1 = *piData2; *piData2 = iTmp; return;}void SelectSort(int aiArray[], int iArrayLen){原创 2022-03-29 19:29:34 · 569 阅读 · 0 评论 -
排序算法---归并排序
1. 归并操作归并排序是在归并操作上实现的。先了解一下归并操作的原理。归并操作:将两个有序数组合并为一个新的有序数组。如有序数组A=[1, 4, 6], B=[2, 4, 5],将其进行合并。设置变量下标i和j分别表示数组A和B的下标。遍历完数组A和B,最终合并后数组为C。若A[i] <= B[j],则将A[i]保存到数组C,并将i++; 若A[i] > B[j],则将B[j]保存到数组C,并将j++;归并操作的具体实现如下:void Merge(int *piAr原创 2022-03-20 15:31:01 · 2106 阅读 · 0 评论