常見演算法題
阿新 • • 發佈:2021-10-09
1、氣泡排序
主要運用雙層for迴圈巢狀,進行氣泡排序 public class BubbleSortTest { public static void main(String[] args) { int[] arr = new int[]{-12,3,2,34,5,8,1}; //氣泡排序 for(int i = 0;i < arr.length-1;i++){//外層迴圈控制排序趟數 for(int j = 0;j <arr.length-1-i;j++){//內層迴圈控制每一趟排序多少次 if(arr[j] >arr[j+1]){int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } //遍歷 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]+"\t"); } } }
2、刪除排序陣列中的重複項
3、兩數之和
題目:給定一個整數陣列 nums和一個目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。 示例:給定 nums = [2, 7, 11, 15], target = 9,因為 nums[0] + nums[1] = 2 + 7 = 9,所以返回 [0, 1] 暴力方法:public用Hash:int[] twoSum (int[] numbers, int target) { // write code here int [] twoindex = new int[2]; for(int i = 0;i<numbers.length-1;i++){ for(int j = i+1;j<numbers.length;j++){ if((numbers[i]+numbers[j])==target){ twoindex[0]=i+1; twoindex[1]=j+1; return twoindex; } } } return null; }
public class Solution { public int[] twoSum (int[] numbers, int target) { int[] result = new int[2]; Map<Integer, Integer> map = new HashMap(); for(int i = 0; i < numbers.length; i++) { if(map.get(target - numbers[i]) != null) { result[0] = map.get(target - numbers[i]) + 1; result[1] = i + 1; return result; } map.put(numbers[i], i); } return result; } }
4、最小的K個數
題目描述 給定一個數組,找出其中最小的K個數。例如陣列元素是4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4。如果K>陣列的長度,那麼返回一個空的陣列import java.util.ArrayList; public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<Integer> list= new ArrayList<>(); if(input.length<k) return list; else{ for(int i=0;i<input.length-1;i++) for(int j=0;j<input.length-1-i;j++) if(input[j+1]<input[j]){ int temp=input[j+1]; input[j+1]=input[j]; input[j]=temp; } for(int m=0;m<k;m++) list.add(input[m]); } return list; } }
5、二分查詢
public static int binarySearch(int[] arr, int x) { 8 int low = 0; 9 int high = arr.length-1; 10 while(low <= high) { 11 int middle = (low + high)/2; 12 if(x == arr[middle]) { 13 return middle; 14 }else if(x <arr[middle]) { 15 high = middle - 1; 16 }else { 17 low = middle + 1; 18 } 19 } 20 return -1; 21 }