概述:冒泡排序(两两相邻比较,每轮把最大值排到了最后)
快速排序(拿出数组第一个元素,其他元素于这个比较得到两组,小在左,大在右,对两组重复上述操作)
选择排序(第一个与其他所有元素比较找到最小值,第二轮用第二个和剩余比较得到次小值,如此循环)
1.快速排序
重点在于数组的拆分,数组的第一个元素定义为基准元素,然后将数组中小于比较元素的数放到左边,将大于比较元素的放到右边,得到两组结果(小于基准元素的一组和大于基准元素的一组)。再对这两个组进行同样的拆分,直到拆分到不能再拆分,数组就自然而然地以升序排列了。时间复杂度 O(n^2)
2.冒泡排序
原理:比较两个相邻的元素,将值大的元素交换到右边(每一轮将找出最大值、次大值。。)时间复杂度O(n^2)
3.选择排序
是直观的排序,通过确定一个 Key 最大或最小值,再从带排序的的数中找出最大或最小的交换到对应位置。再选择次之。双重循环时间复杂度为 O(n^2)
算法描述:
1.第一次遍历 n-1 个数找到最小的和第一个数交换。
2.第二次从下一个数开始遍历 n-2 个数,找到最小的数和第二个数交换。
重复以上操作直到第 n-1 次遍历最小的数和第 n-1 个数交换,排序完成。
4、插入排序
将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
参考 https://www.bilibili.com/video/BV1er4y1b7o4/
https://blog.youkuaiyun.com/kexuanxiu1163/article/details/103051357