英文:
Array sorted or not? Basic level Java
问题
以下是翻译好的代码部分:
package exercici11;
import java.util.Scanner;
public class SortedOrNot {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] myArray = new int[10];
int prev1 = 0;
int prev2 = 0;
int cont1 = 0;
int cont2 = 0;
System.out.print("输入10个数字:");
for (int i = 0; i < myArray.length; i++) {
myArray[i] = sc.nextInt();
}
String result = isSorted(myArray, prev1, prev2, cont1, cont2) ? "已排序。" : "未排序。";
System.out.println(result);
sc.close();
}
private static boolean isSorted(int[] myArray, int prev1, int prev2, int cont1, int cont2) {
for (int i = 0; i < myArray.length; i++) {
for (int j = 0; j < myArray.length; j++) {
prev1 = myArray[i];
if (prev1 < myArray[i]) {
// 升序排序
cont1++;
if (cont1 == 10) {
return true;
}
} else if (prev2 > myArray[i]) {
// 降序排序
cont2++;
if (cont2 == 10) {
// 升序排序
return true;
}
}
}
}
return false;
}
}
谢谢!
Alex 您好。
英文:
I'm trying to make a program that tell me if my array is sorted (ascending and descending).
I created a function and if return true, the array is already sorted and if return false, the array is not sorted.
Actually, always get "Is not sorted".
I don't know if logic is correct, but I think yes, I don't know.
Can you help me, guys?
package exercici11;
import java.util.Scanner;
public class SortedOrNot {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] myArray = new int[10];
int prev1 = 0;
int prev2 = 0;
int cont1 = 0;
int cont2 = 0;
System.out.print("Enter 10 numbers: ");
for (int i = 0; i < myArray.length; i++) {
myArray[i] = sc.nextInt();
}
String result = isSorted(myArray, prev1, prev2, cont1, cont2) ? result = "Is sorted." : "Is not sorted.";
System.out.println(result);
sc.close();
}
private static boolean isSorted(int[] myArray, int prev1, int prev2, int cont1, int cont2) {
for (int i = 0; i < myArray.length; i++) {
for (int j = 0; j < myArray.length; j++) {
prev1 = myArray[i];
if (prev1 < myArray[i]) {
// Ascending sort
cont1++;
if (cont1 == 10) {
return true;
}
} else if (prev2 > myArray[i]) {
// Descending sort
cont2++;
if (cont2 == 10) {
// Ascending sort
return true;
}
}
}
}
return false;
}
}
Thank you!
Regards,
Alex.
答案1
得分: 1
我已经修改了```isSorted()```方法并添加了一些注释。 <br>
import java.util.Scanner;
public class SortedOrNot {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] myArray = new int[10];
System.out.print("输入10个数字:");
for (int i = 0; i < myArray.length; i++) {
myArray[i] = sc.nextInt();
}
String result = isSorted(myArray) ? result = "已排序。" : "未排序。";
System.out.println(result);
sc.close();
}
private static boolean isSorted(int[] myArray) {
int count = 0;
int firstElement = myArray[0];
int lastElement = myArray[myArray.length - 1];
if(lastElement - firstElement >= 0){
// 假设myArray已排序,如果(lastElement - firstElement) >= 0
// 那么我检查数组中的元素是升序还是全部相同
for(int i = 0; i < myArray.length - 1; i++){
if(myArray[i] <= myArray[i + 1]) {
count++;
}
}
}
else {
// 否则我检查数组中的元素是否降序排列
for(int i = 0; i < myArray.length - 1; i++){
if(myArray[i] >= myArray[i + 1]){
count++;
}
}
}
// 对于n个数字,将进行n - 1次比较
return count == myArray.length - 1;
}
}
英文:
I have changed isSorted()
method and added some comments. <br>
import java.util.Scanner;
public class SortedOrNot {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] myArray = new int[10];
System.out.print("Enter 10 numbers: ");
for (int i = 0; i < myArray.length; i++) {
myArray[i] = sc.nextInt();
}
String result = isSorted(myArray) ? result = "Is sorted." : "Is not sorted.";
System.out.println(result);
sc.close();
}
private static boolean isSorted(int[] myArray) {
int count = 0;
int firstElement = myArray[0];
int lastElement = myArray[myArray.length - 1];
if(lastElement - firstElement >= 0){
// Let's say myArray is sorted and if (lastElement - firstElement) >= 0
// then I check if the elements from array are in ascending order
// OR are all the same
for(int i = 0; i < myArray.length - 1; i++){
if(myArray[i] <= myArray[i + 1]) {
count++;
}
}
}
else {
// else I check if the elements from array are in descending order
for(int i = 0; i < myArray.length - 1; i++){
if(myArray[i] >= myArray[i + 1]){
count++;
}
}
}
// for n numbers there will be n - 1 comparisons
return count == myArray.length - 1;
}
}
答案2
得分: 1
你可以使用 Arrays.sort() 方法来实现这个:
import java.util.Arrays;
import java.util.Collections;
public class CheckSortedArray {
public static void main(String[] args) {
Integer[] arr = { 1, 2, 3, 6, 9, 100 };
Integer[] arr2 = { 1, -2, 3, 6, 9, 100 };
Integer[] arr3 = { 9, 7, 0, -1, -100 };
System.out.println(isArraySorted(arr, true)); // 以升序排序,输出 true
System.out.println(isArraySorted(arr2, true)); // 未排序,输出 false
System.out.println(isArraySorted(arr3, false)); // 以降序排序,输出 true
}
/**
* 检查给定数组是否按指定顺序排序
*
* @param arr 要检查顺序的输入数组
* @param isAscendingOrder true 表示升序,false 表示降序
* @return 数组是否已排序
*/
public static boolean isArraySorted(Integer[] arr, boolean isAscendingOrder) {
Integer[] arrCopy = Arrays.copyOf(arr, arr.length);
if (isAscendingOrder) {
// 将数组升序排序
Arrays.sort(arr);
} else {
// 将数组降序排序
Arrays.sort(arr, Collections.reverseOrder());
}
// 检查原数组是否与排序后的数组相等
return Arrays.equals(arr, arrCopy);
}
}
英文:
You can use Arrays.sort() method for this:
import java.util.Arrays;
import java.util.Collections;
public class CheckSortedArray {
public static void main(String[] args) {
Integer[] arr = { 1, 2, 3, 6, 9, 100 };
Integer[] arr2 = { 1, -2, 3, 6, 9, 100 };
Integer[] arr3 = { 9, 7, 0, -1, -100 };
System.out.println(isArraySorted(arr, true)); // Prints true as array is sorted in ascending order
System.out.println(isArraySorted(arr2, true)); // Prints false as array is unsorted
System.out.println(isArraySorted(arr3, false)); // Prints true as array is sorted in descending order
}
/**
* Checks if given array is sorted or not in given order
*
* @param arr Input array to check its order
* @param isAscendingOrder true for ascending order, false for descending
* @return Array is sorted or not
*/
public static boolean isArraySorted(Integer[] arr, boolean isAscendingOrder) {
Integer[] arrCopy = Arrays.copyOf(arr, arr.length);
if (isAscendingOrder) {
// Sorts the array in ascending order
Arrays.sort(arr);
} else {
// Sorts the array in descending order
Arrays.sort(arr, Collections.reverseOrder());
}
// Checks if the original array is equal to sorted array or not
return Arrays.equals(arr, arrCopy);
}
}
答案3
得分: 0
第二个for循环应从i+1开始,你应该将count1和count2与45进行比较。
英文:
the Second for should starts from i+1 and you should compare count1 and count2 with 45.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论