使用插入排序实现有序数组

插入排序是一种简单直观的排序算法,可以用来实现有序数组。它的基本思想是将数组分为已排序区和未排序区,每次从未排序区取出一个元素,将它插入已排序区的合适位置,直到未排序区被全部处理完。以下是通过插入排序实现有序数组的代码:

public class OrderedArray {
    private int[] array;
    private int size;
    
    public OrderedArray(int maxSize) {
        array = new int[maxSize];
        size = 0;
    }
    
    public void insert(int value) {
        int i;
        for (i = size - 1; i >= 0; i--) {
            if (array[i] > value) {
                array[i + 1] = array[i];
            } else {
                break;
            }
        }
        array[i + 1] = value;
        size++;
    }
    
    public int find(int value) {
        int low = 0;
        int high = size - 1;
        while (low <= high) {
            int mid = (low + high) / 2;
            if (array[mid] == value) {
                return mid;
            } else if (array[mid] < value) {
                low = mid + 1;
            } else {
                high = mid - 1;
            }
        }
        return -1;
    }
    
    public boolean delete(int value) {
        int index = find(value);
        if (index != -1) {
            for (int i = index; i < size - 1; i++) {
                array[i] = array[i + 1];
            }
            size--;
            return true;
        }
        return false;
    }
}

插入元素到有序数组

使用上述的OrderedArray类,可以通过调用insert方法将元素插入到有序数组中。以下是具体的步骤:

  1. 首先创建一个空的有序数组:
  2. OrderedArray array = new OrderedArray(10);
  3. 调用insert方法插入元素:
  4. array.insert(5);
    array.insert(3);
    array.insert(7);
    array.insert(1);
    array.insert(9);

获取数组中的元素

可以通过调用find方法来获取有序数组中某个元素的索引位置。如果元素不存在,find方法将返回-1。以下是具体的使用步骤:

  1. 调用find方法查找元素:
  2. int index = array.find(3);
  3. 判断找到的索引位置:
  4. if (index != -1) {
        System.out.println("元素在数组中的索引位置为:" + index);
    } else {
        System.out.println("元素不存在数组中");
    }

删除数组中的元素

可以通过调用delete方法从有序数组中删除某个元素。如果删除成功,delete方法将返回true;否则返回false。以下是具体的使用步骤:

  1. 调用delete方法删除元素:
  2. boolean result = array.delete(7);
  3. 判断删除是否成功:
  4. if (result) {
        System.out.println("元素删除成功");
    } else {
        System.out.println("元素不存在数组中,删除失败");
    }

以上就是通过插入排序实现有序数组的方法,可以插入、查找和删除元素。有序数组的插入、查找和删除操作的时间复杂度均为O(n),其中n为数组的长度。