内排序:待排序列完全放在内存中,适用于待排序列中的元素个数不多,足以在内存中进行。
外排序:排序过程除了需要在内存中进行,还需要访问外存储器,因为待排序列中的元素个数个数太多了。
内排序 之 插入排序
插入排序 之 直接插入排序
代码:
#include <stdio.h>
#define MAX 100
typedef struct{
int elem[MAX];
int length;
}SeqList;
void print_list(SeqList L)
{
for(int i=1; i<=L.length; i++){
printf("%d\n",L.elem[i]);
}
}
void insert_sort(SeqList *L)
{
int i,j;
for(i=2;i<=L->length;i++){
if(L->elem[i] < L->elem[i-1]){
L->elem[0] = L->elem[i];
L->elem[i] = L->elem[i-1];
for(j=i-2;L->elem[0] < L->elem[j];--j){
L->elem[j+1]=L->elem[j];
}
L->elem[j+1] = L->elem[0];
}
}
}
int main()
{
SeqList L = (SeqList){{0,23,11,45,5},4};//L.elem[0]
// print_list(L);
insert_sort(&L);
print_list(L);
}