JS超出精度數字問題的解決方法
阿新 • • 發佈:2021-07-30
我用python實現的氣泡排序是雙指標,這裡雖然也是雙指標,但是flag == 0,可以退出迴圈我不理解
選擇排序python用的是技巧min()函式和切片
java麼求初每一次迴圈索引的最小值(這裡的技巧很厲害),然後再覆蓋賦值
努力拼搏吧,不要害怕,不要去規劃,不要迷茫。但你一定要在路上一直的走下去,儘管可能停滯不前,但也要走。public class suanfa { public static void main(String[] args) { //直接寫main編譯器就自動幫你加上了 suanfa bubble = new suanfa(); //把這整個類賦值給sort變數 //java賦值給變數一般資料型別時候都要加資料型別,指定大小空間;除了上方的類等賦值,方法賦值也要 int[] array = {2,5,1,6,4,9,8,5,3,1,2,0}; int[] arr = {2,5,1,6,4,9,8,5,3,1,2,0}; int[] sort = bubble.sort(array);//類呼叫類中的方法 int[] sort1 = bubble.select(arr);//選擇排序 for(int num:sort){ System.out.print(num+"\t"); } System.out.println("_------分割線------—_"); for(int num:sort1){ System.out.print(num+"\t"); } } //氣泡排序 public int[] sort(int[] array){ int temp = 0; // 外層迴圈,他決定一共走幾趟 //-1為了防止溢位 for(int i = 0;i<array.length-1;i++){ int flag = 0; //通過符號位可以減少無謂的比較,如果已經有序了,就退出迴圈 // 內層迴圈,他決定每趟走一次 for(int j =0;j<array.length-i-1;j++){ //如果後一個大於前一個,則換位 if(array[j+1]>array[j]){ temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; flag=1; } } //為什麼flag == 0,可以退出迴圈 if(flag==0){ break; } } return array; } //選擇排序 public int[] select(int arr[]){ //arr也可以等價於array int temp = 0; for(int i = 0;i<arr.length-1;i++){ //不必python中的range(len(arr)),他不取最後一項, //java這裡要標記清楚 // 認為目前的數就是最小的,記錄最小數的下標 int minIndix = i; for(int j=i+1;j<arr.length;j++){ if(arr[minIndix]>arr[j]){// 修改最小值的下標 minIndix = j; } } // 當退出for就找到這次的最小值,就需要交換位置了 if(i!=minIndix){ //交換當前值和找到最小值的位置 temp = arr[i]; arr[i] = arr[minIndix]; arr[minIndix] = temp; } } return arr; } } ~~