用c语言采用顺序存储结构,完成顺序表的创建,实现对顺序表的直接插入排序、冒泡排序
时间: 2024-03-11 19:44:54 浏览: 131
直接插入、折半插入、冒泡、快速、简单选择等排序方法 用c语言实现
好的,我来回答你的问题。
首先是顺序表的创建,我们可以用一个数组来表示顺序表,这里以整型数据为例:
```c
#define MAXSIZE 100 // 定义最大长度
typedef struct {
int data[MAXSIZE]; // 存放数据元素的数组
int length; // 顺序表的当前长度
} SqList;
void initList(SqList *L) {
L->length = 0;
}
```
接下来是直接插入排序,其基本思想是将待排序的记录插入到已经排好序的记录序列中,从而得到一个新的、记录数增加1的有序序列。具体实现如下:
```c
void insertSort(SqList *L) {
int i, j;
for (i = 2; i <= L->length; i++) {
if (L->data[i] < L->data[i - 1]) {
L->data[0] = L->data[i]; // 将待排序记录存放到哨兵位置
for (j = i - 1; L->data[j] > L->data[0]; j--) {
L->data[j + 1] = L->data[j]; // 记录后移
}
L->data[j + 1] = L->data[0]; // 插入到正确位置
}
}
}
```
最后是冒泡排序,其基本思想是相邻的两个记录比较大小,若前者大于后者,则交换它们的位置,一轮排序下来,最大的记录就被交换到了最后的位置。具体实现如下:
```c
void bubbleSort(SqList *L) {
int i, j;
for (i = 1; i < L->length; i++) {
for (j = L->length - 1; j >= i; j--) {
if (L->data[j] < L->data[j - 1]) {
int temp = L->data[j];
L->data[j] = L->data[j - 1];
L->data[j - 1] = temp;
}
}
}
}
```
以上就是用 C 语言采用顺序存储结构实现顺序表的创建,并实现直接插入排序和冒泡排序的方法。
阅读全文