静态线性表插入排序代码
时间: 2024-07-16 14:00:48 浏览: 49
静态线性表插入排序(也称为顺序插入排序)是一种简单直观的排序算法,其基本思想是将每个元素插入到已经排好序的部分中。对于静态数组(固定大小,不可动态调整),插入排序的步骤通常如下:
```c++
// 假设我们有一个静态数组 arr[] 和它的长度 n
void insertionSort(int arr[], int n) {
// 从第二个元素开始遍历
for (int i = 1; i < n; ++i) {
int key = arr[i]; // 当前待插入的元素
int j = i - 1; // 上一个已排序元素的位置
// 将大于 key 的元素向右移动
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
// 插入 key 到正确位置
arr[j + 1] = key;
}
}
```
这个过程每次选取未排序部分的第一个元素作为“关键”值,然后将其插入到前面已排序序列的适当位置,使得整个序列始终保持有序。
相关问题
线性表插入元素c语言代码
下面是一个示例的线性表插入元素的C语言代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int length;
} List;
void initList(List *L) {
L->length = 0;
}
void insert(List *L, int index, int value) {
if (index < 0 || index > L->length) {
printf("Index out of range!\n");
return;
}
if (L->length == MAX_SIZE) {
printf("List is full!\n");
return;
}
for (int i = L->length - 1; i >= index; i--) {
L->data[i + 1] = L->data[i];
}
L->data[index] = value;
L->length++;
}
int main() {
List L;
initList(&L);
insert(&L, 0, 1);
insert(&L, 1, 2);
insert(&L, 2, 3);
insert(&L, 3, 4);
insert(&L, 2, 5);
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
return 0;
}
```
代码中使用了一个结构体List来表示线性表,包含一个int类型的数组data和一个int类型的length表示当前线性表的长度。initList函数用于初始化线性表,将长度length赋值为0。insert函数用于在指定的位置index插入一个值为value的元素。在插入元素之前,需要判断指定的位置是否合法,即index是否在[0, length]之间,并且线性表是否已满。如果合法,则将位置index及其后面的元素都向后移动一个位置,并在位置index处插入元素value。最后,main函数中示例了如何使用insert函数向线性表中插入元素,并打印出线性表中的所有元素。
线性表的插入和删除代码
线性表是一种常见的数据结构,插入和删除是其中两个基本操作。下面是线性表的插入和删除代码示例:
插入操作:
```python
def insert_element(lst, index, element):
if index < 0 or index > len(lst):
print("插入位置不合法")
return
lst.append(None) # 先在末尾添加一个空元素
for i in range(len(lst)-1, index, -1):
lst[i] = lst[i-1] # 元素后移
lst[index] = element # 在指定位置插入新元素
# 示例使用
my_list = [1, 2, 3, 4, 5]
insert_element(my_list, 2, 10)
print(my_list) # 输出:[1, 2, 10, 3, 4, 5]
```
删除操作:
```python
def delete_element(lst, index):
if index < 0 or index >= len(lst):
print("删除位置不合法")
return
for i in range(index, len(lst)-1):
lst[i] = lst[i+1] # 元素前移
lst.pop() # 删除末尾元素
# 示例使用
my_list = [1, 2, 3, 4, 5]
delete_element(my_list, 3)
print(my_list) # 输出:[1, 2, 3, 5]
```