1.排序的方法: (1)冒泡排序(經典的自定義排序):
算法: 1). 若有n個數排序,必須兩兩比較(相鄰的兩個數)n-1輪----控制外圍的for循環 2).每一輪比較的次數 = n-當前的輪數-----控制里面的for循環 3).每一輪比較完成后,都會獲得當前輪中的最小數, 也就是說,比如: 第一輪比較后,會獲得所有數中的最小(大)數 第二輪比較后,會獲得所有數中的第二小(大)的數 ......(依次類推) 程序: for(int i = 0;i < arr.length - 1;i++){ //外層:控制輪數 for(int j = 0;j < arr.length - 1 - i;j++){ if(isAsc ? arr[j+1] < arr[j] : arr[j+1] > arr[j]){ temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp; } } }(2)系統自定義的排序—java.util.Arrays Arrays.sort(arr, new Comparator(){ //T的類型要和前面arr數組的類型相同(不能是值類型,要用包裝類型,如:Integer) //重寫compara方法 /** 排序的技巧,可以這么記: 1.若要排升序,就用o1 - o2 2.若要排降序,就用o2 - o1 */ }); (3)選擇排序 算法: 第一輪:默認第一個是最小的,然后開始比較,碰到比第一個小的就把當前的位置標記為最小,直 至到最后一個元素,則找到了最小的元素,然后把第一個元素和當前最小的的元素互換位置。 第二輪:默認第二個元素是最小的,然后……… 程序: for(int i = 0;i < arr.length - 1;i++){ //做第i趟排序 int k = i; for(int j = k + 1;j < arr.length;j++){ //選最小的記錄 if(arr[j] < arr[k]){ k = j; //記錄目前找到的最小值所在的位置 } } if(i != k){ //交換arr[i]和arr[k] int temp = arr[i];arr[i] = arr[k];arr[k] = temp; } } (4)插入排序 算法: 從數組的第一個元素a[0]開始,將其后一個元素a[1]插入到a[0]的前面或者后面,接著繼續這一過程。每次都是 將a[i]插入到已經排序好的 程序: for (int i = 1; i < a.length - 1 ; i++) { for (int j = i; j > 0; j–) { if (a[j] < a[j - 1]) { int temp = a[j]; a[j] = a[j - 1]; a[j - 1] = temp; } else { break; } } } 2.數組中元素的查找 (1)順序查找(”窮舉法”) 遍歷數組,從數組中第一個元素開始查找。最簡單,平均效率低。 如:查找一個數組中,所有等于num這個數的下標 int[] founded = new int[arr.length]; //存儲num在原數組arr中出現的下標,最多arr.length個 for(int i = 0;i < founded.length;i++){ founded[i] = -1; //默認的是將founded數組的所有元素都置-1; } int count = arr.length; //定義一個變量,記錄founded中值為-1的總個數 for(int i = 0;i < arr.length;i++){ //窮舉查找 if(arr[i] == num){ founded[i] = i; count–; } } return count
新聞熱點
疑難解答