今天好晚了,明天必定補上今天這一課!!困~~java
Java.util.Arrays是Java集成好的用於數組排序的算法。算法
1 package com.baidu.java; 2 3 import java.util.Arrays; 4 5 //排序算法 6 public class TestPXSF { 7 public static void main(String[] args) { 8 //0.排序算法Java有集成好的算法 9 int[] arr1=new int[]{1,-4,5,-38,-4,0,50}; 10 //遍歷 11 System.out.println("使用Java集成好的算法排序arr1前:"); 12 for(int i=0;i<arr1.length;i++){ 13 System.out.print(arr1[i]+" "); 14 } 15 Arrays.sort(arr1);//排序算法 16 System.out.println("\n使用Java集成好的算法排序arr1後:"); 17 for(int i=0;i<arr1.length;i++){ 18 System.out.print(arr1[i]+" "); 19 } 20 //1.冒泡排序的算法 21 //聲明一個數組對其中元素排序 22 int[] arr=new int[]{1,-5,10,30,-53,18,100,-6,-5,18,26}; 23 int[] arr2=new int[]{1,-4,5,-38,-4,0,50}; 24 System.out.println("\n排序以前的遍歷:"); 25 for(int i=0;i<arr.length;i++){ 26 System.out.print(arr[i]+" "); 27 } 28 //對數組進行冒泡排序 29 for(int i=0;i<arr.length-1;i++){//冒泡排序走arr.length-1趟 30 for(int j=0;j<arr.length-1-i;j++){//每趟比較的次數 31 //從頭比較相鄰的兩個數,若前邊的大,則交換 32 if(arr[j]>arr[j+1]){ 33 int temp=0; 34 temp=arr[j]; 35 arr[j]=arr[j+1]; 36 arr[j+1]=temp; 37 } 38 } 39 } 40 41 System.out.println("\n排序以後的遍歷:"); 42 for(int i=0;i<arr.length;i++){ 43 System.out.print(arr[i]+" "); 44 } 45 //2.用直接選擇排序對arr2進行排序 46 System.out.println("\n直接選擇排序排序前遍歷arr2:"); 47 for(int i=0;i<arr2.length;i++){ 48 System.out.print(arr2[i]+" "); 49 } 50 //對數組arr2進行直接選擇排序 51 /*for(int i=0;i<arr2.length-1;i++){//比較的次數 52 for(int j=i;j<arr2.length;j++){//每趟都是從第i個元素一直比到最後一個 53 if(arr2[i]>arr2[j]){//每趟的第一個元素大於後邊的元素,則交換 54 int temp=0; 55 temp=arr2[j]; 56 arr2[j]=arr2[i]; 57 arr2[i]=temp; 58 } 59 } 60 } 61 */ 62 //對直接選擇排序的優化,能夠當每趟的第一個數大於後邊的數後,記住後邊數的角標 63 //用這個小些的數再去和後邊的元素比,直到最後找出最小的那個數,跟第一個數交換 64 //這樣作每趟就只交換一次,提升了效率, 65 //優化後以下: 66 for(int i=0;i<arr2.length-1;i++){//比較的次數 67 68 int t=i;//定義每趟第i個元素爲最小元素 69 70 for(int j=i;j<arr2.length;j++){//每趟都是從第i個元素一直比到最後一個 71 if(arr2[t]>arr2[j]){//可是若第i個元素大於後邊的元素,則交換下角標 72 t=j;//而後由小的這個元素繼續跟後邊比較 73 } 74 } 75 if(t!=i){//若是角標變了,則交換 76 int temp=arr2[t];//最小的數的角標永遠是賦值給t,arr2[t]是最小的數 77 arr2[t]=arr2[i]; 78 arr2[i]=temp; 79 } 80 } 81 82 System.out.println("\n直接選擇排序後遍歷arr2:"); 83 for(int i=0;i<arr2.length;i++){ 84 System.out.print(arr2[i]+" "); 85 } 86 87 88 89 } 90 }
運行結果:數組