c语言使用顺序表实现直接插入排序算法,并在主函数中输入元素,再输出排序结果(需要用到顺序表的各种基本运算)
时间: 2024-10-25 19:16:14 浏览: 32
在C语言中,顺序表通常通过数组结构来实现。以下是使用顺序表实现直接插入排序的一个简单示例:
```c
#include <stdio.h>
typedef struct {
int *data; // 存储数据的指针
int size; // 序列长度
int capacity; // 序列最大容量
} SeqList;
// 初始化顺序表
void init(SeqList *list) {
list->data = (int*)malloc(sizeof(int) * list->capacity);
list->size = 0;
}
// 插入元素
void insert(SeqList *list, int value) {
if (list->size == list->capacity) {
list->capacity *= 2; // 当满时扩大一倍
list->data = (int*)realloc(list->data, sizeof(int) * list->capacity);
}
list->data[list->size++] = value;
}
// 直接插入排序
void insertionSort(SeqList *list) {
for (int i = 1; i < list->size; i++) {
int key = list- 1;
while (j >= 0 && list->data[j] > key) {
list->data[j + 1] = list->data[j];
j--;
}
list->data[j + 1] = key;
}
}
// 输出顺序表
void printSeqList(SeqList *list) {
for (int i = 0; i < list->size; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
int main() {
SeqList list;
init(&list);
int n;
printf("Enter number of elements to sort: ");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int input;
printf("Enter element %d: ", i+1);
scanf("%d", &input);
insert(&list, input);
}
printf("Original sequence before sorting:\n");
printSeqList(&list);
insertionSort(&list);
printf("Sorted sequence:\n");
printSeqList(&list);
free(list.data); // 释放内存
return 0;
}
```
在这个程序中,我们首先创建了一个顺序列表结构,然后初始化它,接着读取用户输入并逐个插入到列表中。最后对插入后的列表进行直接插入排序,然后打印出排序前后的结果。
阅读全文