三位數排序,陣列排序
阿新 • • 發佈:2018-11-19
三位數簡單排序
給三位數進行排序,三位數排序應該是很簡單的,還是用了一天多的時間,總共掌握了兩種方法,一種是簡單的常規排序,就是每個數都比較一次,然後寫出結果,以下是第一種方法:
public class Count {
/**
* 給出三位數,進行三位數排序
*
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 100;
int b = 93;
int c = 56;
if(a>=b) {
int temp=a;
a=b;
b=temp;
}
if(a>=c) {
int temp=a;
a=c;
c=temp;
}
if(b>=c) {
int temp=b;
b=c;
c=temp;
}
System.out.println(a + "\n" + b + "\n" + c);
}
}
此假設的邏輯是假設a是最大的,a和其他數一一比較,則設定a為臨時變數temp,通過相等的方式,把temp賦值給比較的數字,其他數值依此論推;
若是要倒序,則把“>”改為“<”;
四位數排序
用這種方法也可以比較四位數的,只是,缺點是數字越多,比較起來越麻煩
public class Count1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 給出一個四位數,進行排序
/**
* 注意:複製過程中,要改引數,不該引數,就會出問題,我就是沒改引數費了好大的力氣,以為方法有問題
*
*/
int a = 5;
int b = 6;
int c = 2;
int d = 4;
if (a >= b) {
int temp = a;
a = b;
b = temp;
}
if (a >= c) {
int temp = a;
a = c;
c = temp;
}
if (a >= d) {
int temp = a;
a = d;
d = temp;
}
if (b >= c) {
int temp = b;
b = c;
c = temp;
}
if (b >= d) {
int temp = b;
b = d;
d = temp;
}
if (c >= d) {
int temp = c;
c = d;
d = temp;
}
System.out.println(a + "\n" + b + "\n" + c + "\n" + d);
}
}
陣列排序、氣泡排序
相比於常規方法,資料排序/氣泡排序簡單,理解卻很有難度,以下是程式碼,感受下
public class Array {
/**
* 給出一個數組,進行數組裡面的值進行排序
*
* @param args
*/
public static void main(String[] args) {
int array[] = { 26, 12, 67, 45, 89, 32 };
for (int i = 0; i <array.length; i++) {
for (int j = 0; j <array.length - i - 1; j++) {
if (array[j] >= array[j + 1]) {
int temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
}
}
}
for (int x : array) {
System.out.println(x);
}
}
}
第一個for定義的是數的長度
第二個for定義的陣列排序的位置,怎麼理解這句話,從下面的if可以看出來:
if (array[j] >= array[j + 1]) {
int temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
假設一組數的長度[ 26, 12, 67, 45, 89, 32 ],那麼,前面的數比後面的數大,則向後移,後面的往前移,我覺得這個表示式要表達的就是這麼個結果,如果對於普通表示式有所理解,賦值變數這方面也就理解了
難點在於對“j