數組元素排序的三種方法(附完整代碼)


1.Arrays類進行數組排序

Java API對Arrays類的說明是:此類包含用來操作數組(比如排序和搜索)的各種方法。

Arrays類中的sort()使用的是“經過調優的快速排序法”;

 1 package api.array.paixu;  2 
 3 import java.util.Arrays;  4 
 5 import static api.array.paixu.ArrayReverse.arrReverse;  6 import static api.array.paixu.SetArray.arrayIntSet;  7 
 8 public class PaiXu_1 {  9     public static void main(String[] args) { 10         int[] arr = arrayIntSet();//arrayIntSet()是從鍵盤獲取數字返回數組
11  Arrays.sort(arr); 12         System.out.println("該數組元素從小到大排序:" + Arrays.toString(arr)); 13         /*
14  反轉數組得到 arrReverse方法詳細介紹
15 */ 16 System.out.println("該數組元素從大到小排序:" + Arrays.toString(arrReverse(arr))); 17  } 18 }

2.相鄰數組元素比較大小,調換位置進行數組排序

嵌套循環結果,對相鄰數組元素比較,滿足Array[i]<Array[i+1]的,進行位置調換。

 1 package api.array.paixu;  2 
 3 import java.util.Arrays;  4 
 5 import static api.array.paixu.ArrayReverse.arrReverse;  6 import static api.array.paixu.SetArray.arrayIntSet;  7 
 8 public class PaiXu_2 {  9 
10     public static void main(String[] args) { 11         int[] arr = arrayIntSet();//arrayIntSet()是從鍵盤獲取數字返回數組
12         for (int first = 0; first < arr.length; first++) { 13             for (int second = 0; second < arr.length; second++) { 14                 if (arr[first] < arr[second]) { 15                     int temp = arr[first]; 16                     arr[first] = arr[second]; 17                     arr[second] = temp; 18  } 19  } 20  } 21         System.out.println("該數組元素從小到大排序:" + Arrays.toString(arr)); 22         /*
23  反轉數組得到 arrReverse方法詳細介紹
24 */ 25 System.out.println("該數組元素從大到小排序:" + Arrays.toString(arrReverse(arr))); 26  } 27 }

3.利用ArrayList改變集合長度進行數組排序(詳情

Java API對ArrayList類的說明是:ArrayList 類是一個可以動態修改的數組,與普通數組的區別就是它是沒有固定大小的限制,我們可以添加或刪除元素。

利用ArrayList中addRemove方法,獲取並添加數組元素,然后找出數組元素最大值依次添加至新的集合,實現數組排序。

 1 package api.array.paixu;  2 
 3 import java.util.ArrayList;  4 import java.util.Arrays;  5 import java.util.Scanner;  6 
 7 import static api.array.paixu.SetArray.arrayIntSet;  8 
 9 public class PaiXu_3 { 10     public static void main(String[] args) { 11         ArrayList<Integer> list = new ArrayList<>(); 12         ArrayList<Integer> list2 = new ArrayList<>(); 13         int[] array = arrayIntSet(); 14         for (int j : array) { 15  list.add(j); 16  } 17         //從大到小排列方法:
18         do { 19             int max = list.get(0); 20             for (Integer integer : list) { 21                 if (integer >= max) { 22                     max = integer; 23  } 24  } 25  list2.add(max); 26             list.remove((Integer) max);  //獲取ArrayList對應元素索引值:ArrayList.indexOf(元素名);
27         } while (!list.isEmpty()); 28         System.out.println("從大到小:"); 29  System.out.println(list2); 30         //恢復list到初始狀態
31         for (int j : array) { 32  list.add(j); 33  } 34  list2.clear(); 35         //從小到大排列方法:
36         do { 37             int min = list.get(0); 38             for (Integer integer : list) { 39                 if (integer <= min) { 40                     min = integer; 41  } 42  } 43  list2.add(min); 44             list.remove((Integer) min);  //獲取ArrayList對應元素索引值:ArrayList.indexOf(元素名);
45         } while (!list.isEmpty()); 46         System.out.println("從小到大:"); 47  System.out.println(list2); 48  } 49 }

執行輸出:

代碼中需要用到的兩個方法:

1.定義Int數組 arrayIntSet()

 1 package api.array.paixu;  2 
 3 import java.util.Arrays;  4 import java.util.Scanner;  5 
 6 public class SetArray {  7     public static int[] arrayIntSet() {             //將從鍵盤輸入的數字放進一個數組
 8         Scanner sc = new Scanner(System.in);  9         System.out.println("請輸入數組元素的個數:"); 10         int sum = sc.nextInt(); 11         int[] arr = new int[sum]; 12         for (int i = 0; i < sum; i++) { 13             System.out.print("請輸入第" + (i + 1) + "個元素:"); 14             arr[i] = sc.nextInt(); 15  } 16         System.out.println("輸入的數組為:" + Arrays.toString(arr)); 17         return arr; 18  } 19 }

2.數組元素反轉:(點擊查看詳細介紹)

 1 package api.array.paixu;  2 
 3 public class ArrayReverse {  4     public static int[] arrReverse(int[] array) {  5         for (int first = 0, last = array.length - 1; first < last; first++, last--) {  6             int temp;  7             temp = array[first];  8             array[first] = array[last];  9             array[last] = temp; 10  } 11         return array; 12  } 13 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM