国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

排序算法和查找算法

2019-11-09 17:37:58
字體:
來源:轉載
供稿:網友

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 固阳县| 闸北区| 台州市| 曲阳县| 金山区| 略阳县| 左贡县| 凌源市| 巴中市| 普兰店市| 茌平县| 武夷山市| 崇文区| 三河市| 星子县| 页游| 张掖市| 易门县| 建湖县| 扎兰屯市| 宝应县| 宿州市| 进贤县| 潮安县| 甘泉县| 碌曲县| 原阳县| 东港市| 五指山市| 浙江省| 焉耆| 开平市| 贺兰县| 临泽县| 新乐市| 岳池县| 富锦市| 夏邑县| 武安市| 襄城县| 米易县|