书名:数据结构与算法图解
作者:[美]杰伊.温格罗 (Jay Wengrow)
出版社:人民邮电出版社
出版时间:2019-04-01
ISBN: 9787115509000
知识点:
- 用大O比较算法性能
- 冒泡排序,python代码如代码1,主要步骤:比较和交换,步长均为,时间复杂度
- 叫做二次时间,JavaScript代码2示意了检测数组重复值以及改良版可以打印步数的代码3,最后是时间复杂度为O(N)的最终版代码4
代码1
def bubble_sort(list):
unsorted_until_index = len(list) - 1 # 列表倒数第二个索引
sorted = False
step = 0
while not sorted:
sorted = True
for i in range(unsorted_until_index):
step += 1
if list[i] > list[i+1]:
step += 1
sorted = False # 排序未完成
list[i], list[i+1] = list[i+1], list[i]
unsorted_until_index -= 1
print(step)
list = [65, 55, 45, 35, 25, 15, 10]
bubble_sort(list)
print(list) # output:42 [10, 15, 25, 35, 45, 55, 65]
代码2
function hasDuplicateValue(array) {
for (var i = 0; i < array.length; i++) {
for (var j = 0; j < array.length; j++) {
if (i !== j && array[i] == array[j]) {
return true;
}
}
}
return false;
}
代码3
function hasDuplicateValue(array) {
var steps = 0;
for (var i = 0; i < array.length; i++) {
for (var j = 0; j < array.length; j++) {
steps++;
if (i !== j && array[i] == array[j]) {
return true;
}
}
}
console.log(steps);
return false;
}
代码4:
array=[3,5,8]
输出existingNumbers=[undefined,undefined,undefined,1,undefined,1,undefined,undefined,1]
function hasDuplicateValue(array) {
var steps = 0;
var existingNumbers = [];
for (var i = 0; i < array.length; i++) {
steps++;
if (existingNumbers[array[i]] === undefined) {
existingNumbers[array[i]] = 1;
} else {
return true;
}
}
console.log(steps);
return false;
}