分治法: 1. 将问题拆分为几个子问题,并且这些子问题和原问题相似只是量级上小一些。 2. 递归地解决每一个子问题,然后结合这些子问题的解决方案构造出原问题的解决方案。 我们已经遇到过的问题: 1. 二分搜索 2. 归并排序 3. 快速排序 分治法例子: 练习1:快速指数: 能够快速计算出a的n次方 ...
分类:
编程语言 时间:
2019-10-08 23:58:47
阅读次数:
195
本文将基于C语言,依次介绍八大排序算法:冒泡排序、选择排序、插入排序、希尔排序、堆排序、快速排序、归并排序、基数排序,并对其性能作对比。 ...
分类:
编程语言 时间:
2019-10-07 17:22:03
阅读次数:
108
参考视频:https://www.bilibili.com/video/av62621532?t=534 ...
分类:
编程语言 时间:
2019-10-07 13:08:36
阅读次数:
53
稳定性: 稳定:冒泡排序,插入排序,归并排序、桶排序、计数排序、基数排序 非稳定:选择排序、快速排序、堆排 稳定性的优势 稳定性可保证双属性条件下,按第一个属性排序后,再按照第二个属性排序,排完后属性2相等的元素,按属性1的顺序排列。 工程中 长序列: 基础类型:快排(非稳定) 自定义属性:堆排(稳 ...
分类:
编程语言 时间:
2019-10-03 21:42:17
阅读次数:
94
利用js来实现一些常见的排序算法,在面试中问得还是挺多的,下面我就其进行了简单的总结。sort()方法首先要讲讲JS数组排序的sort方法,它实现的原理是通过两两比较的方法,sort()方法按升序排列数组项,即最小的值位于最前面,最大的值位于最后面,为了实现排序,sort()方法会调用每个数组项的t... ...
分类:
编程语言 时间:
2019-10-02 21:23:38
阅读次数:
96
1. 冒泡排序 2. 插入排序 3. 选择排序 4. 快速排序 5. 二分查找 ...
分类:
编程语言 时间:
2019-09-30 17:01:02
阅读次数:
91
快速排序是从冒泡排序演变而来,但比冒泡排序高效的多,所以叫做快速排序。同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。不同的是它采用了分治法。冒泡排序在每一轮只把一个元素冒泡到数列的一端,而快速排序在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列一边,比 ...
分类:
编程语言 时间:
2019-09-29 12:52:38
阅读次数:
75
快速排序: 1. 样例求解:5 7 10 6 9 4 3 8 2. i要从基数开始,因为如果对于要排序的一个区间,基数恰好就是最小的那个数,那么它对于后面的排序无影响,整个过程不需要交换,当时由代码的思想需要将基数调到小于它的数的右边,如果从基数后面的数开始遍历,那么当基数为最小值时,也会出现基数后 ...
分类:
编程语言 时间:
2019-09-23 18:11:19
阅读次数:
76
/****************************************************** 快速排序:稳定排序 最好情况:T=O(n*logn)//待排序序列越无序,算法效率越高 最坏情况:T=O(n*n) //待排序列越有序,算法效率越低 ******************* ...
分类:
编程语言 时间:
2019-09-20 00:04:02
阅读次数:
107
Python八大算法的实现,插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。 1、插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法 ...
分类:
编程语言 时间:
2019-09-19 21:09:41
阅读次数:
81