排序算法的比较
内排序的方法有许多,教材上面提到的有:冒泡排序、直接插入排序、选择排序、希尔排序、快速排序、归并排序和堆排序。请编写一简单应用程序,实现上述提到的各种排序算法。
注意:1.需要输出每一趟排序的中间结果;
2.为方便排序算法的比较,不同排序算法请使用相同数据。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 100
#define LEN 10
typedef struct
{
int data[MAXSIZE]; //存在范围0~MAXSIZE-1
int len; //长度
}SqList;
void init(SqList *L,int n)
{
L->len=n;
for(int i=0;i<L->len;i++)
{
L->data[i]=rand()%(L->len*10);
}
}
void print(SqList *L)
{
for(int i=0;i<L->len;i++)
{
printf("%4d ",L->data[i]);
}
printf("\n");
}
//test
void TestSort(SqList L)
{
printf("Sort Data:\n");
print(&L);
for(int i=0;i<L.len-1;i++)
{
//Sort
print(&L);
}
printf("\n");
}
//1.Insertion Sort
void InsertSort(SqList L)
{
int i,j,k,memo;
printf("\nInsertSort:\n");
for(i = 1; i < L.len; i++)
{
memo = L.data[i];
for(j = i-1; j >= 0; j--)
{
if(memo <= L.data[j])
{
L.data[j+1] = L.data[j];
if(j == 0)
{
L.data[j] = memo;
break;
}
}
else