设计一个完整的算法,将x插入一个有序(从小到大排序)的线性表(顺序存储结构)的适当位置上,以保持线性表的有序性。完整java代码
时间: 2023-11-03 12:31:32 浏览: 123
线性表顺序存储运算的算法实现
好的,以下是将元素插入有序顺序表的 Java 代码:
```java
public class OrderedLinearList {
private int[] elements; // 存储元素的数组
private int size; // 线性表中元素的个数
// 构造方法,初始化线性表容量为capacity
public OrderedLinearList(int capacity) {
elements = new int[capacity];
size = 0;
}
// 在适当位置插入元素
public void insert(int x) {
if (size == 0) { // 如果线性表为空,直接插入元素
elements[0] = x;
size++;
} else {
int i;
for (i = size - 1; i >= 0; i--) { // 从后往前遍历线性表,找到插入位置
if (elements[i] > x) { // 如果该位置元素比待插入元素大,则将该位置元素后移一位
elements[i + 1] = elements[i];
} else {
break; // 如果该位置元素比待插入元素小,则插入到该元素后面
}
}
elements[i + 1] = x;
size++;
}
}
// 打印线性表中的所有元素
public void printList() {
for (int i = 0; i < size; i++) {
System.out.print(elements[i] + " ");
}
System.out.println();
}
// 测试插入方法
public static void main(String[] args) {
OrderedLinearList list = new OrderedLinearList(10);
list.insert(5);
list.insert(3);
list.insert(8);
list.insert(1);
list.insert(4);
list.printList(); // 打印结果应该为:1 3 4 5 8
}
}
```
这个算法的思路是:从后往前遍历有序线性表,找到待插入元素的插入位置,然后将该位置及其后面的所有元素后移一位,最后将待插入元素插入到该位置上。如果线性表为空,直接将元素插入到第一个位置上。
阅读全文