如何找到在JavaScript中按降序对数字数组进行排序所需的最小交换次数

费米·劳拉

我试图让我的代码做到这一点:

原始数组= [1,2,3,4]交换一次-> [4,2,3,1]再次交换-> [4,3,2,1]

因此结果是2

但这不起作用。这是我到目前为止的内容:

   

 function check(arr){
	var sarr = [];
	var cnt = 0;
	var arrL = arr.length;
   // Create a second copy of the array for reference
	var arrCopy = [...arr];
	for(let i=0; i<arrL;i++){
		var maxV = Math.max(...arr);
		sarr.push(maxV);
		let pos = arr.indexOf(maxV);
		// Remove the found number
		arr.splice(pos,1);
		// Check if the index of the number in the new array is same with the copy, if not then there was a swap
		let ai =arrCopy.indexOf(maxV); 
		let si =sarr.indexOf(maxV);
		if (ai !== si && (i+1)!=arrL && pos !== 0){
		cnt++;
        };
	}

	console.log(cnt);
}

check([1, 2, 3, 4, 5, 6]);//Result should be 3
check([6,5,4,3,2,1]); //result should be 0

check([1,2,3,4]); //result should be 2

check([1,3,2,5,4,6]); //result should be 3

check([1,2,10,4,5,6,7,8,9,3,12,11]);//result should be 6

check([ 49, 37, 9, 19, 27, 3, 25, 11, 53,  42, 57, 50, 55,  56, 38, 48, 6, 33, 28, 8, 20, 31, 51, 14, 23, 4, 58, 52, 36, 22, 41, 47, 39, 2, 7, 13, 45, 1, 44, 32, 10, 15, 21, 30, 17,  60, 29, 5, 59, 12, 40, 24, 54, 46, 26, 43, 35, 34, 18, 16]);//result should be 54

有人可以让我知道我在做什么错吗?

妮娜·斯科茨(Nina Scholz)

我将从降序排列的数组开始,以获得正确的项目索引。

出于实际原因(或者只是循环的简短概念,包括检查和减量),我从数组末尾开始循环。

然后,我在dame索引处检查arrayand的值,reversed然后继续进行迭代。

如果值不相同,则会交换所需位置i和实际位置的项目,p并增加计数。

最后,返回计数。

function check(array) {
  var reversed = array.slice().sort((a, b) => b - a),
      count = 0,
      i = array.length,
      p;

  while (i--) {
      if (array[i] === reversed[i]) continue;
      p = array.indexOf(reversed[i]);
      [array[i], array[p]] = [array[p], array[i]];
      count++;
  }
  console.log(...array);
  return count;
}

console.log(check([1, 2, 3, 4, 5, 6])); // 3
console.log(check([6, 5, 4, 3, 2, 1])); // 0
console.log(check([1, 2, 3, 4])); // 2
console.log(check([1, 3, 2, 5, 4, 6])); // 3
console.log(check([1, 2, 10, 4, 5, 6, 7, 8, 9, 3, 12, 11])); // 6
console.log(check([ 49, 37, 9, 19, 27, 3, 25, 11, 53,  42, 57, 50, 55,  56, 38, 48, 6, 33, 28, 8, 20, 31, 51, 14, 23, 4, 58, 52, 36, 22, 41, 47, 39, 2, 7, 13, 45, 1, 44, 32, 10, 15, 21, 30, 17,  60, 29, 5, 59, 12, 40, 24, 54, 46, 26, 43, 35, 34, 18, 16])); // 54
.as-console-wrapper { max-height: 100% !important; top: 0; }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C中对数字数组进行排序

来自分类Dev

如何创建对数字数组进行排序并能够即时交换数组的函数?

来自分类Dev

如何创建对数字数组进行排序并能够即时交换数组的函数?

来自分类Dev

如何在Scala中按数字对中的第二对按降序对数字对列表进行排序?

来自分类Dev

在 JavaScript 中对数字数组和对象数组进行排序

来自分类Dev

如何根据大小对数字数组列表进行排序?

来自分类Dev

在VBS中对数字数组进行排序

来自分类Dev

在Inno Setup中对数字数组进行排序

来自分类Dev

对数组进行冒泡排序所需的最少交换次数是多少?

来自分类Dev

如何在MapReduce中按降序对数据进行排序?

来自分类Dev

如何在JMeter Beanshell中对数字数组进行排序

来自分类Dev

如何在iOS的降序排列中对数组进行排序?

来自分类Dev

按数字字段按降序或升序对数组Angular 7进行排序

来自分类Dev

按降序对数组进行排序,并在新数组中收集主数组的变化

来自分类Dev

为什么javascript不按数字顺序对数字数组排序?

来自分类Dev

如何让我的快速排序算法按升序和降序对数组进行排序?

来自分类Dev

对数组进行排序并找到重复的数字

来自分类Dev

如何使用Lo-Dash按降序对数组进行排序?

来自分类Dev

numpy-如何按降序对值/键对数组进行排序

来自分类Dev

Ruby根据多个条件对数字数组进行排序

来自分类Dev

用科学计数法对数字数组进行排序

来自分类Dev

查找交换的最小数量以对数组进行排序

来自分类Dev

在多张纸中按降序对数据进行排序

来自分类Dev

Javascript:如何按该数组中的对象值对数组进行排序?

来自分类Dev

如何使用javascript按组对数组进行排序?

来自分类Dev

在Javascript中按日期对数组进行排序

来自分类Dev

Javascript在Oracle中按顺序对数组进行排序

来自分类Dev

按Javascript中的特定键值对数组进行排序

来自分类Dev

Javascript在Oracle中按顺序对数组进行排序

Related 相关文章

  1. 1

    如何在C中对数字数组进行排序

  2. 2

    如何创建对数字数组进行排序并能够即时交换数组的函数?

  3. 3

    如何创建对数字数组进行排序并能够即时交换数组的函数?

  4. 4

    如何在Scala中按数字对中的第二对按降序对数字对列表进行排序?

  5. 5

    在 JavaScript 中对数字数组和对象数组进行排序

  6. 6

    如何根据大小对数字数组列表进行排序?

  7. 7

    在VBS中对数字数组进行排序

  8. 8

    在Inno Setup中对数字数组进行排序

  9. 9

    对数组进行冒泡排序所需的最少交换次数是多少?

  10. 10

    如何在MapReduce中按降序对数据进行排序?

  11. 11

    如何在JMeter Beanshell中对数字数组进行排序

  12. 12

    如何在iOS的降序排列中对数组进行排序?

  13. 13

    按数字字段按降序或升序对数组Angular 7进行排序

  14. 14

    按降序对数组进行排序,并在新数组中收集主数组的变化

  15. 15

    为什么javascript不按数字顺序对数字数组排序?

  16. 16

    如何让我的快速排序算法按升序和降序对数组进行排序?

  17. 17

    对数组进行排序并找到重复的数字

  18. 18

    如何使用Lo-Dash按降序对数组进行排序?

  19. 19

    numpy-如何按降序对值/键对数组进行排序

  20. 20

    Ruby根据多个条件对数字数组进行排序

  21. 21

    用科学计数法对数字数组进行排序

  22. 22

    查找交换的最小数量以对数组进行排序

  23. 23

    在多张纸中按降序对数据进行排序

  24. 24

    Javascript:如何按该数组中的对象值对数组进行排序?

  25. 25

    如何使用javascript按组对数组进行排序?

  26. 26

    在Javascript中按日期对数组进行排序

  27. 27

    Javascript在Oracle中按顺序对数组进行排序

  28. 28

    按Javascript中的特定键值对数组进行排序

  29. 29

    Javascript在Oracle中按顺序对数组进行排序

热门标签

归档