Javascript switchMaxMin Java脚本
我必须编写一个函数switchMaxMin(tab,n),它在n元素数组tab中交换最大元素和最小元素。我们假设数组中的所有元素都是不同的(即没有几个最大值或最小值)。我不知道怎么做 我开始写代码,我想到了这个:Javascript switchMaxMin Java脚本,javascript,html,Javascript,Html,我必须编写一个函数switchMaxMin(tab,n),它在n元素数组tab中交换最大元素和最小元素。我们假设数组中的所有元素都是不同的(即没有几个最大值或最小值)。我不知道怎么做 我开始写代码,我想到了这个: var选项卡=新数组(6,4,65,34,67,89,45,7,35,79,23,56,87,12,38,9); var min=制表符[0]; var max=tab[0]; 文件。书写(“Tablica:”); 对于(i=1;i制表符[i]){ 最小值=制表符[i]; } 如果(
var选项卡=新数组(6,4,65,34,67,89,45,7,35,79,23,56,87,12,38,9);
var min=制表符[0];
var max=tab[0];
文件。书写(“Tablica:”);
对于(i=1;i制表符[i]){
最小值=制表符[i];
}
如果(最大值<表[i]){
max=tab[i];
}
}
写(“
Max:+Max”);
文件。写入(“
Min:+Min”)代码>要交换元素,还必须存储max和min元素的索引
if (min > tab[i]) {
min = tab[i];
minIndex = i;
}
if (max < tab[i]) {
max = tab[i];
maxIndex = i;
}
var选项卡=新数组(6,4,65,34,67,89,45,7,35,79,23,56,87,12,38,9);
var min=制表符[0];
var max=tab[0];
var-minIndex=0;
var-maxIndex=0;
文件。书写(“Tablica:”);
for(设i=1;i制表符[i]){
最小值=制表符[i];
minIndex=i;
}
如果(最大值<表[i]){
max=tab[i];
maxIndex=i;
}
}
交换程序(最大索引、最小索引);
写(“
Max:+Max”);
文件。写入(“
Min:+Min”);
document.write(“
在交换之后”+tab.join(“,”);
函数交换程序(maxInd、minInd){
设temp=tab[maxInd];
tab[maxInd]=tab[minInd]
tab[minInd]=温度;
}
这只是另一种方法,效率稍低,但代码行更少
var选项卡=新数组(6,4,65,34,67,89,45,7,35,79,23,56,87,12,38,9);
var min=Math.min.apply(空,制表符);
var MiniIndex=制表指数(最小值);
var max=Math.max.apply(空,制表符);
var maxIndex=tab.indexOf(最大值);
变量温度=选项卡[最小索引]
tab[minIndex]=tab[maxIndex]
tab[maxIndex]=温度;
console.log(选项卡)
用于(i=1;
你应该将i
初始化为零,否则你总是会错过数组中的第一个元素。数组是零索引的。据我所知,这似乎是正确的。问题是什么?如果你只是想得到关于代码的反馈以及如何改进它,那么你可能应该尝试在@phuzi上发布这个,不。第一个(在索引零处)是最小值和最大值的起始值。循环从索引1开始。啊,对不起。我错过了初始化。文档。写入(制表符[I],“,”)在for循环中,在之后检查它时没有意义。是的,但代码是正确的,我给+1。@Dharmindar我想OP的目的是用它打印原始数组。
function swapper(maxInd, minInd) {
let temp = tab[maxInd];
tab[maxInd] = tab[minInd]
tab[minInd] = temp;
}