使用c语言编写一段代码:采用顺序存储结构,完成顺序表的创建,实现对顺序表的直接插入排序、冒泡排序。
时间: 2024-03-03 11:49:16 浏览: 24
好的,下面是代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int length;
} SqList;
void initList(SqList *L, int arr[], int n) {
int i;
for (i = 0; i < n; i++) {
L->data[i] = arr[i];
}
L->length = n;
}
void printList(SqList L) {
int i;
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void insertSort(SqList *L) {
int i, j;
for (i = 1; i < L->length; i++) {
if (L->data[i] < L->data[i-1]) {
int temp = L->data[i];
for (j = i-1; j >= 0 && L->data[j] > temp; j--) {
L->data[j+1] = L->data[j];
}
L->data[j+1] = temp;
}
}
}
void bubbleSort(SqList *L) {
int i, j;
for (i = 0; i < L->length-1; i++) {
for (j = 0; j < L->length-i-1; j++) {
if (L->data[j] > L->data[j+1]) {
swap(&L->data[j], &L->data[j+1]);
}
}
}
}
int main() {
int arr[] = {38, 65, 97, 76, 13, 27, 49};
int n = sizeof(arr) / sizeof(arr[0]);
SqList L;
initList(&L, arr, n);
printf("原始数组:");
printList(L);
insertSort(&L);
printf("插入排序后:");
printList(L);
bubbleSort(&L);
printf("冒泡排序后:");
printList(L);
return 0;
}
```
这段代码实现了顺序表的创建,以及直接插入排序和冒泡排序两种排序算法。你可以在 main 函数中将需要排序的数组放入 arr 数组中,在 initList 函数中将 arr 数组中的元素赋值给顺序表 L,然后分别调用 insertSort 和 bubbleSort 函数对顺序表进行排序,最后打印排序后的结果。