数据结构和算法的学习
在开始之前我们先来写一个帮助测试的函数
// 生成有n个元素的随机数组,每个元素的随机范围为[rangeL, rangeR]
func generateRandomArray(count:Int,rangL:Int,rangR:Int) -> Array<Int> {
if rangR <= rangL{
fatalError("取值范围不准确")
}
var arr:[Int] = Array()
for _ in 0..<count {
let arc = rangR - rangL + 1
let item:Int = Int(arc4random()) % arc + rangL
arr.append(item)
}
return arr
}
// 判断arr数组是否有序
func isSorted(arr:[Int]) -> Bool {
for i in 0..<arr.count-1 {
if arr[i] > arr[i+1] {
return false
}
}
return true
}
排序算法优越评价有三个指标,执行效率、内存消耗、稳定性,一般来讲,在分析效率时会从几个方面来衡量:
-
时间复杂度。会从最好、最坏和平均情况三个来分析;
-
时间复杂度的系数、常数 、低阶。在对同一阶时间复杂度的排序算法性能对比的时候,我们就要把系数、常数、低阶也考虑进来。
-
比较次数和交换(或移动)次数。
排序算法参考: