2015-09-11 63 views
0

正如在標題中所說,這是一個使用選擇排序的降序排序整數。這是程序..我有困難瞭解步驟。有人可以幫助我理解它嗎?提前致謝!!需要幫助瞭解這個具體降序排序選擇整數排序

import java.util.Scanner; 
public class Selectionsort_descending 
{ 
public static void main(String args[]) 
{ 
int i,j,k,m,n; 
Scanner sc = new Scanner(System.in); 
System.out.println("Enter any number"); 
n=sc.nextInt(); 
int a[]=new int [n]; 

for (i=0;i<=n-1;i++) 
{ 
System.out.println("Enter number"); 
a[i]=sc.nextInt(); 
    } 
for (j=0;j<=n-1;j++) 
{ 
for (k=j;k<=n-1;k++) 
{ 
if (a[j]<a[k]) 
{ 
m=a[j]; 
a[j]=a[k]; 
a[k]=m; 
    } 
} 
    } 
for (i=0;i<=n-1;i++) 
{ 
System.out.print(a[i]+" "); 
    }  
    } 
} 
+0

你在哪裏找到這個代碼?它不符合編碼標準,它不適合縮進,它使用不可讀的變量名稱。如果你正在努力學習,那麼這不是專業人士寫的,你不應該從中學習。 – RealSkeptic

+0

我的一個學校朋友做了它...爲什麼兄弟?程序中的概率是什麼? @RealSkeptic – rockz3r

+0

@ rockz3r - 由於交換是在內部循環內完成的,所以它是一個冒泡排序或類似的東西。如果交換是在內部循環之外完成的,那麼這是一個選擇類或類似的東西。請參閱下面的答案,其中包含帶示例代碼的維基鏈接。 – rcgldr

回答

0

首先我會強烈建議讓你的代碼更加格式化。在Eclipse中,按[Ctrl] + [Shift] + [F]完成。

通過這樣做,你的代碼應該看起來像那樣(我做了一些改進,我會解釋一下)。

import java.util.Scanner; 

public class Selectionsort_descending { 
public static void main(String args[]) { 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Enter any number"); 
    int n = sc.nextInt(); 
    int a[] = new int[n]; 

    for (int i = 0; i < n ; i++) { 
     System.out.println("Enter number"); 
     a[i] = sc.nextInt(); 
    } 

    for (int j = 0; j < n ; j++) { 
     for (int k = j; k < n; k++) { 
      if (a[j] < a[k]) { 
       int m = a[j]; 
       a[j] = a[k]; 
       a[k] = m; 
      } 
     } 
    } 

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

    sc.close(); 
} 
} 

首先我改變第 「i < = N-1」 至 「我< N」,因爲我認爲它是更可讀這樣。

其次我聲明瞭所有變量,當它們被實際使用時,並且在開始時不正確,就像你做的那樣。

在第一個for-loop中,您通過控制檯輸入您的號碼。

然後您檢查陣列中的各個號碼:(j爲環路)

  • 通過這個號碼(K爲環路)
  • 是當前號碼后里面傳來所有數字(A [J ])小於數組中稍後的數字(a [k])? →更改頭寸

    如果您想了解更多信息,這個algorythm也稱爲「選擇排序」。 我希望我能幫助你!

+0

夥計...我告訴選擇排序..我知道如何做泡沫排序。我想要選擇排序的解釋。 :) @Linux Nox – rockz3r

+0

看着節目..你做的是選擇排序..但錯誤你告訴「這algorythm被稱爲泡沫排序」.. .. – rockz3r