最近在看《数据结构与算法JavaScript描述》这本书,看到选择排序这部分时,发现一个比较大的错误。

原书的选择排序算法是这样的:

function selectionSort() {
	var min, temp;
	for (var outer = 0; outer <= this.dataStore.length - 2; ++outer) {
		min = outer;
		for (var inner = outer + 1; inner <= this.dataStore.length - 1; ++inner) {
			if (this.dataStore[inner] < this.dataStore[min]) {
				min = inner;
			}
			swap(this.dataStore, outer, min);
		}	
	}
}

错误在于,它把swap函数放在了内循环里面了,其实swap函数应该放在内循环外面,原理就不多说了,书上都有:

function selectionSort() {
	var min, temp;
	for (var outer = 0; outer <= this.dataStore.length - 2; ++outer) {
		min = outer;
		for (var inner = outer + 1; inner <= this.dataStore.length - 1; ++inner) {
			if (this.dataStore[inner] < this.dataStore[min]) {
				min = inner;
			}
		}	
		swap(this.dataStore, outer, min);
	}
}

相关文章:

  • 2022-12-23
  • 2021-11-07
  • 2021-10-08
  • 2021-12-04
  • 2022-12-23
  • 2021-09-09
  • 2021-12-05
  • 2021-05-09
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-16
  • 2021-08-16
  • 2021-10-11
相关资源
相似解决方案