Python算法面试题
常见的几种排序算法
1 2 3 4
| def sortArray(self, nums): if len(nums) <= 1: return nums
|
选择排序
1 2 3 4
| def sortArray(self, nums): if len(nums) <= 1: return nums
|
冒泡排序
1 2 3 4
| def sortArray(self, nums): if len(nums) <= 1: return nums
|
插入排序
1 2 3 4
| def sortArray(self, nums): if len(nums) <= 1: return nums
|
选择排序
1 2 3 4
| def sortArray(self, nums): if len(nums) <= 1: return nums
|
希尔排序
1 2 3 4
| def sortArray(self, nums): if len(nums) <= 1: return nums
|
归并排序
1 2 3 4
| def sortArray(self, nums): if len(nums) <= 1: return nums
|
快速排序
最常考察的排序方法,同样使用到了分治的思想。
快速排序的思想是从数组中选取一个值作为基值,以基值为分界点将整个数组划分为两个子数组。
在基值前面的数组都比基值小,后面的都比基值大。然后再递归的对子数组使用相同的划分。
实际中基值的选择通常选择第一个数,为了防止最坏的情况发生(即倒序),可以在排序之前将数组进行打乱。
1 2 3 4 5 6 7 8 9 10
| def sortArray(self, nums): if len(nums) <= 1: return nums left = 0 right = len(nums)-1 pivot = nums[0] while left
|
堆排序
堆排序用构建大顶堆(小顶堆)的方法,先将数组构从底向上建成一个堆。然后每次将堆顶的元素与尾部元素交换。这样尾部的元素就是最大值了。再将剩下的元素从头开始交换,推出第一个顶堆,以此迭代