以前都是用冒泡排序和插入排序,这两种排序时间复杂度都是O(n^2),为了避免数据太大超时,所以去学习了其他的排序方式。
快速排序,时间复杂度为O(nlogn),但是不稳定。此排序运用分治的思想,基本思路就是以数组的第一个数为基准,将最左下标和最右下标赋给变量i和j,然后j从左往右寻找比基准小的数,而i从左往右寻找比基准大的数,两者找到一个后,进行交换,直到i=j。此时数组分为两半,左边是比基准小的数字,右边是比基准大的数字,此时进行递归操作,再次细分,最后完成数组排序。
代码实现:
1:给i,j赋值下标并定义基准
2:进行循环操作,找到后半部分比基准小的数,前半部分比基准大的数,必须保持i<j。找到后,进行交换。
3:循环完成时,已经遍历完了整个数组,完成了大数组的大小分类,将基准数放到中间,再分别对前后部分递归。
完整代码: