
算法与数据结构
pandashero
养猪专业爆发户
展开
-
排序算法----冒泡排序
冒泡排序是一种简单的排序算法,算法的原理如下: 1. 比较相邻元素,如果第一个比第二个大,就交换他们两者之间的顺序 2. 对每一对相邻元素作相同工作,从开始第一对到结尾最后一对,第一次完毕后,最后的元素就是最大值。 3. 针对所有元素重复上述操作,除了最后一个 4. 持续每次对越来越少的元素重复上面操作,直到没有任何一对数字需要比较。例如有一个数...原创 2018-12-07 10:16:14 · 231 阅读 · 0 评论 -
排序算法----选择排序
选择排序的思路是,先从序列中找到最小的元素,放在第一个位置,然后找到第二小的元素,放在第二个位置,以此类推,直到排好所有的值。时间复杂度:O(n^2),需要进行比较的次数为第一轮n-1,n-2,n-3...1,总的比较次数n*(n-1)/2例如:a=[1,2,3,4,5,6]python3代码def select_sorted(li): for i in range(...原创 2018-12-07 12:06:34 · 194 阅读 · 0 评论 -
排序算法----插入排序
基本思想:在要排序的一组数中,假定前n-1个数已经排序好,现在将第n个数插入到前面的有序数列中,使得着n个数也是排好顺序的,如此反复循环,直到全部排好顺序。时间复杂度:O(n^2)python代码:def insert_sort(li): #升序 for i in range(1 , len(li)): # 第一个数字顺序确定,外层循环表示还需要排序的数字个数 ...原创 2018-12-10 11:31:48 · 979 阅读 · 0 评论 -
排序算法----希尔排序
希尔排序是插入排序的一种更高效的改进版本,它是非稳定的排序算法。希尔排序是基于插入排序的两点性质提出的改进算法: 插入排序对于已经排序好的数据操作时效率高,可以达到线性排序的效率,但是一般来说插入排序是低效的,因为插入排序每次只能将数据移动一位,例如如下序列[1,2,3,4,5],需要降序排列,当我们采用插入排序时,每次插入都需要移动位置,此时插入排序的效率就很低。基...原创 2018-12-10 15:57:51 · 254 阅读 · 0 评论 -
排序算法----归并排序
归并排序采用了二分法,首先对于一个长数组,将其不停的分为左边和右边,以此递归分下去,直到把数组分解成最小单元。然后合并两个有序数组,比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位,直到一个数组为空,最后把另一个数组的剩余部分复制过来即可。 时间复杂度:O(nlogn)稳定性:稳定缺点:空间复杂度很大python代码实现li = [4, 2, 1, 3...原创 2018-12-11 10:43:59 · 226 阅读 · 0 评论 -
排序算法----快速排序
快速排序采用分治法策略来把一个序列分成两个子序列。步骤从数列中挑选出一个元素,称为基准; 重新排序数列,所有元素比基准小的放在基准前面,所有元素比基准大的放在基准后面(相同的数据可以放在任意一边),在这个分区结束后,该基准处于数列的中间位置,这个称为分区操作; 递归的把小于基准值的子数列和大于基准值的子数列排序 python代码def quick_sort(alist, s...原创 2018-12-11 17:40:40 · 228 阅读 · 0 评论