算法通关村第三关——数组

23 阅读1分钟

查找(作业)

// "static void main" must be defined in a public class.
import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        int[] arr ={1,2,3,4,6,5,8};
        int length = arr.length;
        int key = 5;
        findByElement(arr, length, key);
    }
    /**

   * @param size 已经存放的元素个数 
     * @param key 待查找的元素
       */
       public static int findByElement(int[] arr, int size, int key) {
       Arrays.sort(arr);
       for (int i = 0; i < size; i++) {
       if (arr[i] > key){
           System.out.println("key does not exist.");
           return i;
       }else if (arr[i] == key) {
           System.out.println("the key is founded at index " + i);
           return i;
       } 
       }
       return -1;
       }
  }

插入(从后向前)

/**
 * 将元素插入到部分排序的数组中,并保持排序顺序。
 * @param arr 部分排序的数组
 * @param size 数组中已排序的元素数量
 * @param element 要插入的元素
 * @return 插入元素的索引位置,如果数组已满,返回 -1
 */
public static int addByElementSequence(int[] arr, int size, int element) {
    // 如果数组已满,则无法插入元素
    if (size >= arr.length) {
        return -1;
    }

    int i;
    // 从后往前查找插入位置,同时移动元素
    for (i = size - 1; (i >= 0) && (arr[i] > element); i--) {
        arr[i + 1] = arr[i];
    }
    // 插入元素到找到的位置
    arr[i + 1] = element;
    // 返回新插入元素的索引位置
    return i + 1;
}