Hướng dẫn swap the largest number with smallest number in an array in javascript - hoán đổi số lớn nhất với số nhỏ nhất trong một mảng trong javascript

0

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang cố gắng tạo một chương trình yêu cầu người dùng nhập một số, có bao nhiêu số ngẫu nhiên trong khoảng 1-100 sẽ được tạo trong một mảng. Sau đó, tôi muốn số lớn nhất được hoán đổi với số cuối cùng và số nhỏ nhất được hoán đổi với số đầu tiên. Đây là mã của tôi cho đến nay:

import java.util.Scanner;
import java.util.Random;

public class smallbig
{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Random randomGenerator = new Random();

        int num = scan.nextInt();
        int[] myArray = new int[num];

        for (int i = 0; i < myArray.length; ++i) {
            int randomInt = randomGenerator.nextInt(100);
            myArray[i] = randomInt;
        }
        int smallest = myArray[0];
        int largest = myArray[0];

        for (int i = 1; i < myArray.length; i++) {
            if (myArray[i] > largest) {
                largest = myArray[i];
            }
            if (myArray[i] < smallest) {
                smallest = myArray[i];
            }
        }

        for (int j = 1; j < myArray.length; j++) {
            int first = myArray[0];
            myArray[0] = smallest;
            smallest = first;

            int temp = largest;
            int last = myArray.length;
            myArray[last - 1] = largest;
            temp = myArray[last - 1];

            System.out.print(myArray[j] + " ");
        }
    }
}

Tôi dường như không thể có được các con số để hoán đổi đúng cách. Tôi đã tạo một vòng lặp xác định các số nhỏ nhất và lớn nhất từ ​​các số được tạo và chúng được lưu trữ. Sau đó, tôi tạo một vòng lặp thực hiện các giao dịch hoán đổi cần thiết nhưng dường như tôi không thể làm cho nó hoạt động đúng. Nó hoạt động tốt khi hoán đổi số lớn nhất với số cuối cùng nhưng hầu hết thời gian (không phải lúc nào), số cuối cùng xuất hiện cũng có mặt ở một nơi khác trong mảng. Đây là những gì tôi muốn nói:

input: 10
output: 62 48 34 0 91 14 64 60 91

Tôi biết có một phương pháp Swapper mà tôi có thể sử dụng nhưng tôi muốn làm điều đó bằng cách trao đổi thủ công các số. Bất kỳ sự giúp đỡ được đánh giá cao, cảm ơn.

Hướng dẫn swap the largest number with smallest number in an array in javascript - hoán đổi số lớn nhất với số nhỏ nhất trong một mảng trong javascript

Suraj Bajaj

6.5805 Huy hiệu vàng37 Huy hiệu bạc49 Huy hiệu đồng5 gold badges37 silver badges49 bronze badges

Đã hỏi ngày 23 tháng 11 năm 2016 lúc 20:03Nov 23, 2016 at 20:03

2

Bạn có một lỗi đơn giản, vòng lặp của bạn sẽ bắt đầu từ '0' khi bạn thực hiện hoán đổi

for (int j = 0; j < myArray.length; j++) {
        int first = myArray[0];
        myArray[0] = smallest;
        smallest = first;

        int temp = largest;
        int last = myArray.length;
        myArray[last - 1] = largest;
        temp = myArray[last - 1];

        System.out.print(myArray[j] + " ");

Đã trả lời ngày 23 tháng 11 năm 2016 lúc 20:19Nov 23, 2016 at 20:19

Hướng dẫn swap the largest number with smallest number in an array in javascript - hoán đổi số lớn nhất với số nhỏ nhất trong một mảng trong javascript

3

Thay vì một vòng lặp làm

//find and stores poition of small
int smallPos = myArray.indexOf(small);

//stores tge values at 0
int tempSmall = myArray[0];

//swaps the values
myArray[0] = small;
myArray[smallPos] = smallTemp;

Chỉ cần lặp lại điều này với giá trị lớn nhất và in nó bằng cách sử dụng một vòng lặp. Hãy cho tôi biết nếu nó hoạt động.

Đã trả lời ngày 23 tháng 11 năm 2016 lúc 20:13Nov 23, 2016 at 20:13

OmaromarOmar

951 Huy hiệu vàng3 Huy hiệu bạc11 Huy hiệu đồng1 gold badge3 silver badges11 bronze badges

Tôi chỉ đã thử điều này. Hi vọng điêu nay co ich.

public class App {
static int[] a = new int[100];
public static void main(String[] args) {
    int i;
    for(i = 0; i<a.length;i++)
        a[i] = (int)(java.lang.Math.random() * 100);

    int smallest = 0, largest = 0;

    for(i =1; i<a.length; i++){
        if(a[i] < a[smallest])
            smallest = i;
        if(a[i] > a[largest])
            largest = i;
    }

    swap(0,smallest);
    swap(a.length-1,largest);

    for(i =0; i<a.length;i++)
        System.out.print(a[i] + " ");
}

public static void swap(int i, int j){
    int temp = a[i];
    a[i] = a[j];
    a[j] = temp;
}
}

Đã trả lời ngày 23 tháng 11 năm 2016 lúc 20:29Nov 23, 2016 at 20:29

Hướng dẫn swap the largest number with smallest number in an array in javascript - hoán đổi số lớn nhất với số nhỏ nhất trong một mảng trong javascript

Vòng lặp cuối cùng của bạn không làm bất cứ điều gì vòng lặp. Nó chỉ làm điều tương tự hơn và hơn. Và những gì nó làm không đúng. Nó đang hoán đổi nhỏ nhất vào phần tử đầu tiên nhưng nó không di chuyển phần tử đầu tiên ở bất cứ đâu: nó đã biến mất.

Bạn cần theo dõi nơi các yếu tố lớn nhất và nhỏ nhất. Logic hoán đổi của bạn không xem xét điều đó.

Đã trả lời ngày 23 tháng 11 năm 2016 lúc 20:13Nov 23, 2016 at 20:13

Hướng dẫn swap the largest number with smallest number in an array in javascript - hoán đổi số lớn nhất với số nhỏ nhất trong một mảng trong javascript

Omaromarnicomp

951 Huy hiệu vàng3 Huy hiệu bạc11 Huy hiệu đồng4 gold badges22 silver badges52 bronze badges

Tôi chỉ đã thử điều này. Hi vọng điêu nay co ich.

import java.util.Scanner;
import java.util.Random;

public class smallbig
{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Random randomGenerator = new Random();

        int num = scan.nextInt();
        int[] myArray = new int[num];

        for (int i = 0; i < myArray.length; ++i) {
            int randomInt = randomGenerator.nextInt(100);
            myArray[i] = randomInt;
        }
        int smallest = myArray[0];
        int largest = myArray[0];
        int pos1,pos2;

        for (int i = 1; i < myArray.length; i++) {
            if (myArray[i] > largest) {
                largest = myArray[i];
                pos1=i;
            }
            if (myArray[i] < smallest) {
                smallest = myArray[i];
               pos2=i;
              }
        }



myArray[pos1]=myArray[myArray.length-1];
myArray[myArray.length-1]=largest;

myArray[pos2]=myArray[0];
myArray[0]=smallest;

        for (int j = 1; j < myArray.length; j++) {


            System.out.print(myArray[j] + " ");
        }
    }
}

Đã trả lời ngày 23 tháng 11 năm 2016 lúc 20:29Nov 23, 2016 at 20:15

Hướng dẫn swap the largest number with smallest number in an array in javascript - hoán đổi số lớn nhất với số nhỏ nhất trong một mảng trong javascript

Vòng lặp cuối cùng của bạn không làm bất cứ điều gì vòng lặp. Nó chỉ làm điều tương tự hơn và hơn. Và những gì nó làm không đúng. Nó đang hoán đổi nhỏ nhất vào phần tử đầu tiên nhưng nó không di chuyển phần tử đầu tiên ở bất cứ đâu: nó đã biến mất.Tanuj Yadav

Bạn cần theo dõi nơi các yếu tố lớn nhất và nhỏ nhất. Logic hoán đổi của bạn không xem xét điều đó.13 silver badges21 bronze badges

Nicompnicomp

import java.util.Scanner;
import java.util.Random;



public class smallbig
{

    private static int[] myArray;

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Random randomGenerator = new Random();

        //int num = scan.nextInt(); //skip this for testing ^^-d
        int num = 10;
        myArray = new int[num];

        for (int i = myArray.length-1; i > 0; i--) {
            //int randomInt = randomGenerator.nextInt(100);
            int randomInt = i; //use test condition that can be reproduced!
            myArray[i] = myArray.length-i;
        }
        int smallest = 0;
        int largest = 0;

        int smallestIndex = 0;
        int largestIndex = 0;

        for (int i = 0; i < myArray.length; i++) {
            if (myArray[i] > largest) {
                largest = myArray[i];
                largestIndex = i;
            }
            if (myArray[i] < smallest) {
                smallest = myArray[i];
                smallestIndex = i;
            }
        }

        switchIndexOfmyArray(0, smallestIndex);

        switchIndexOfmyArray(myArray.length-1, largestIndex);

        for (int j = 0; j < myArray.length; j++) {
            System.out.print(myArray[j] + " ");
        }

    }
    public static void switchIndexOfmyArray(int index, int switchWithIndex){
        int temp = myArray[index];
        myArray[index] = myArray[switchWithIndex];
        myArray[switchWithIndex] = temp;
    }
}

4.1234 Huy hiệu vàng22 Huy hiệu bạc52 Huy hiệu Đồng

0 1 8 7 6 5 4 3 2 9 

Viết mã này

Đã trả lời ngày 23 tháng 11 năm 2016 lúc 20:15

Tanuj Yadavtanuj YadavNov 23, 2016 at 20:41

1.21113 huy hiệu bạc21 Huy hiệu đồng

import java.util.Scanner;
import java.util.Random;

public class smallbig
{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Random randomGenerator = new Random();

        int num = scan.nextInt();
        int[] myArray = new int[num];

        for (int i = 0; i < myArray.length; ++i) {
            int randomInt = randomGenerator.nextInt(100);
            myArray[i] = randomInt;
        }


        for(int k=0; k < myArray.length; k++)
        {
            System.out.print(myArray[k] + " ");
        }

        System.out.println();

        int smallest = myArray[0];
        int largest = myArray[0];

        int sIndx = 0;
        int lIndx = 0;

        for (int i = 1; i < myArray.length; i++) {
            if (myArray[i] > largest) {
                largest = myArray[i];
                lIndx = i;
            }
            if (myArray[i] < smallest) {
                smallest = myArray[i];
                sIndx = i;
            }
        }

        System.out.println();
        System.out.println("Smallest = "+smallest);
        System.out.println("largest = "+largest);
        System.out.println("Smallest Index = "+sIndx);
        System.out.println("largest Index = "+lIndx);

        swapSmallAndLargest(num, myArray, sIndx, lIndx);

        for(int k=0; k < myArray.length; k++)
        {
            System.out.print(myArray[k] + " ");
        }


    }

    private static void swapSmallAndLargest(int num, int[] myArray, int sIndx, int lIndx) {
        int temp = 0;

        temp = myArray[sIndx];
        myArray[sIndx] = myArray[0];
        myArray[0] = temp;

        temp = myArray[lIndx];
        myArray[lIndx] = myArray[num-1];
        myArray[num-1] = temp;
    }
}

Tôi sẽ khuyên không nên sử dụng máy quét hoặc giá trị ngẫu nhiên để thử nghiệm vì kết quả không thể được sao chép (ít nhất là không dễ dàng). Hãy cẩn thận với chỉ số mảng là gì và giá trị là gì ở một chỉ mục cụ thể. Điều này có thể dẫn đến sự nhầm lẫn rất nhanh. ^^Mar 15, 2017 at 13:24

Làm thế nào để bạn tìm thấy số lớn nhất và nhỏ nhất trong một mảng javascript?

Để có được số cao nhất hoặc thấp nhất từ một mảng trong javascript, bạn có thể sử dụng các phương thức math.max () hoặc math.min () sau đó truyền các phần tử từ mảng sang các phương thức này bằng toán tử lây lan (...).use the Math. max() or the Math. min() methods then spread the elements from the array to these methods using the spread operator ( ... ).

Làm thế nào để bạn trao đổi số trong một mảng?

Hàm hoán đổi tích hợp () có thể hoán đổi hai giá trị trong một mảng.mẫu hoán đổi void (T & A, T & B);Hàm hoán đổi () có hai đối số của bất kỳ loại dữ liệu nào, tức là, hai giá trị cần được hoán đổi. . template void swap (T& a, T& b); The swap() function takes two arguments of any data type, i.e., the two values that need to be swapped.

Làm thế nào để bạn tìm thấy yếu tố thấp nhất và cao nhất trong một mảng?

Chúng ta có thể sử dụng min_element () và max_element () để tìm các phần tử tối thiểu và tối đa của mảng trong C ++.use min_element() and max_element() to find the minimum and maximum elements of the array in C++.

Làm thế nào để bạn tìm thấy số lớn nhất trong một mảng javascript?

Hàm math.max () trả về số lớn nhất được đưa ra dưới dạng tham số đầu vào hoặc - vô cực nếu không có tham số.Math.max() function returns the largest of the numbers given as input parameters, or - Infinity if there are no parameters.