我试图按升序对数组进行排序。由于某种原因,它只执行一次for循环。为什么在一切都被排序之前它不会继续下去?
它是一项任务,所以我不允许使用现有的排序方法。我自己应该写这个方法。
public class Sudoku {
public static void main(String[] args) {
int[] a = { 1, 4, 3, 5, 2 };
System.out.println(Arrays.toString(sortArray(a)));
}
public static int[] sortArray(int[] nonSortedArray) {
int[] sortedArray = new int[nonSortedArray.length];
int temp;
for (int i = 0; i < nonSortedArray.length - 1; i++) {
if (nonSortedArray[i] > nonSortedArray[i + 1]) {
temp = nonSortedArray[i];
nonSortedArray[i] = nonSortedArray[i + 1];
nonSortedArray[i + 1] = temp;
sortedArray = nonSortedArray;
}
}
return sortedArray;
}
}
答案 0 :(得分:3)
public static int[] sortArray(int[] nonSortedArray) {
int[] sortedArray = new int[nonSortedArray.length];
int temp;
for (int j = 0; j < nonSortedArray.length - 1; j++) {// added this for loop, think about logic why do we have to add this to make it work
for (int i = 0; i < nonSortedArray.length - 1; i++) {
if (nonSortedArray[i] > nonSortedArray[i + 1]) {
temp = nonSortedArray[i];
nonSortedArray[i] = nonSortedArray[i + 1];
nonSortedArray[i + 1] = temp;
sortedArray = nonSortedArray;
}
}
}
return sortedArray;
}
输出: [1,2,3,4,5]
或强>
//making use of j
public static int[] sortArray(int[] nonSortedArray){
int[] sortedArray = new int[nonSortedArray.length];
int temp;
for (int i = 0; i <= nonSortedArray.length; i++)
{
for (int j = i+1; j < nonSortedArray.length; j++)
{
if (nonSortedArray[i] > nonSortedArray[j])
{
temp = nonSortedArray[i];
nonSortedArray[i] = nonSortedArray[j];
nonSortedArray[j] = temp;
sortedArray = nonSortedArray;
}
}
}
return sortedArray;
}
答案 1 :(得分:1)
arr = new int[Item];
Arrays.sort(arr);
在java中内置函数以按升序排序数组。
答案 2 :(得分:0)
您正尝试使用单个循环对数组进行排序。您将需要两个循环来确保元素按排序顺序。
public static int[] sortArray(int[] nonSortedArray)
{
int[] sortedArray = new int[nonSortedArray.length];
int temp;
for (int i = 0; i < nonSortedArray.length-1; i++)
{
for (int j = i+1; j < nonSortedArray.length; j++)
{
if (nonSortedArray[i] > nonSortedArray[j])
{
temp = nonSortedArray[i];
nonSortedArray[i] = nonSortedArray[j];
nonSortedArray[j] = temp;
sortedArray = nonSortedArray;
}
}
}
return sortedArray;
}
答案 3 :(得分:0)
这将按升序对数组进行排序
int arr[]={33,3,4,5,1};
Arrays.sort(arr);
System.out.println(Arrays.toString (arr));
输出将: - [1,3,4,5,33]
答案 4 :(得分:0)
按升序排列数组
private static int[] sort(int[] array) {
int[] new_array = new int[array.length];
int count=0;
for (int i=0; i<array.length; i++) {
for(int j=i+1; j<array.length+i;j++) {
if(array[i]>=array[j%array.length])
count++;
}
for(int loc=count; loc>0;loc--) {
if(new_array[loc]==0)
{
new_array[loc]=array[i];
break;
}
}
count=0;
}
return new_array;
}