1. 程式人生 > 其它 >常見演算法題

常見演算法題

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
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; }
用Hash:
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     }