#include "1.h"
int main() {
List *list1,*list2,*list3,*list4,*list5,*list6;
list1 = (List*)malloc(sizeof(List));
list2 = (List*)malloc(sizeof(List));
list3 = (List*)malloc(sizeof(List));
list4 = (List*)malloc(sizeof(List));
list5 = (List*)malloc(sizeof(List));
list6 = (List*)malloc(sizeof(List));
int num;
printf("请输入元素个数:");
scanf("%d",&num);
initialize(list1,list2,list3,list4,list5,list6,num);
// 简单排序
SelectSort(list1);
for (int i = 0; i < num; i++) {
printf("%d ",list1->array[i].key);
}
// 直接插入排序
InsertSort(list2);
for (int i = 0; i < num; i++) {
printf("%d ",list2->array[i].key);
}
// 冒泡排序
BubbleSort(list3);
for (int i = 0; i < num; i++) {
printf("%d ",list3->array[i].key);
}
//快速排序
printf("\n快速排序:\n");
QuickSort(list4,0,num-1);
for (int i = 0; i < num; i++) {
printf("%d ",list4->array[i].key);
}
//双路合并排序
MergeSort(list5);
for (int i = 0; i < num; i++) {
printf("%d ",list5->array[i].key);
}
// 堆排序
HeapSort(list6);
for (int i = 0; i < num; i++) {
printf("%d ",list6->array[i].key);
}
return 0;
}
1.h
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100000
// 数据元素
typedef struct Entry {
int key; // 值
}Entry;
// 顺序表
typedef struct List {
int num; // 元素个数
Entry array[MaxSize]; // 元素数组
}List;
// 交换
void swap(int *a, int *b) {
int flag = *a;
*a = *b;
*b = flag;
}
// 初始化顺序表
void initialize(List *list1, List *list2, List *list3, List *list4, List *list5, List *list6,int num) {
list1->num = num;
list2->num = num;
list3->num = num;
list4->num =