[英]Sort an array in ascending order by using a subroutine in java
我需要創建一個從升序對數組進行排序的子例程,並且我想在舊數組下顯示新排序的數組以及其中的最大值和最小值。
到目前為止,我只提出了這段代碼,其中有很多錯誤
PS 我不想使用 array.sort() function。
public class acsendingarrays {
public static void main(String[] args) {
int i;
int[] tab=new int[30];
for(i=0;i<tab.length;i++)tab[i]=(int)(Math.random()*1001);
for(i=0;i<tab.length;i++)System.out.print(tab[i]+" ");
for ( i = 0; i < tab.length; i++)
{
for (int j = i; j < tab.length; j++) {
sortAsc(int[i])
}
}
}
static int sortAsc(int tab[]) {
int temp;
int max = 0, min = 1000;
int i;
for (i = 0; i < tab.length; i++) {
for (int j = i; j < tab.length; j++) {
if (tab[i] > tab[j]) {
temp = tab[i];
tab[i] = tab[j];
tab[j] = temp;
}
if (tab[i] > max) {
max = tab[i];
}
if (tab[i] < min) {
min = tab[i];
}
}
}
return tab[i];
}
}
我不知道你為什么需要這些最大和最小變量,但試試這個代碼:
public class acsendingarrays {
public static void main(String[] args) {
int i;
int[] tab=new int[30];
for(i=0;i<tab.length;i++)tab[i]=(int)(Math.random()*1001);
for(i=0;i<tab.length;i++)System.out.print(tab[i]+" ");
System.out.println("");
sortAsc(tab);
for(i=0; i<tab.length; i++)System.out.print(tab[i] + " ");
}
static void sortAsc(int tab[]) {
int temp;
int max=0 , min = 1000;
int i;
for ( i = 0; i < tab.length; i++)
{
for (int j = i; j < tab.length; j++) {
if (tab[i] > tab[j]) {
temp = tab[i];
tab[i] = tab[j];
tab[j] = temp;
}
if (tab[i] > max) {
max = tab[i];
}
if (tab[i] < min) {
min = tab[i];
}
}
}
}
}
您犯的第一個錯誤是 class 名稱。 請務必更改您的 class 名稱。 接下來,您必須將整個數組選項卡傳遞給 sortAsc() 方法。 您無需檢查由 j 索引的循環中的最大值和最小值,因為這往往會進行大量重復比較。 所以移動取決於由 i 索引的循環。 如果你是初學者,沒關系。 但是如果你在大學,強烈建議你學習排序方法並開始使用 sort() 方法。 僅在必要時使用 static 方法。
import java.lang.Math;
import java.util.Arrays;
public class AscendingArrays {
public static void main(String[] args) {
int tab[] = new int[30];
for(int i = 0; i < tab.length; i++)
tab[i] = (int)(Math.random()*1001);
System.out.println(Arrays.toString(tab));
AscendingArrays a = new AscendingArrays();
a.sortAsc(tab);
System.out.println(Arrays.toString(tab));
}
public void sortAsc(int[] tab) {
int max = 0, min = 10000;
for(int i = 0; i < tab.length; i++) {
for(int j = i + 1; j < tab.length; j++) {
if(tab[i] > tab[j]) {
tab[i] ^= tab[j];
tab[j] ^= tab[i];
tab[i] ^= tab[j];
}
}
if(max < tab[i]) max = tab[i];
if(min > tab[i]) min = tab[i];
}
System.out.println("Largest :" + max);
System.out.println("Smallest:" + min);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.