内排序按策略划分,可以分为5类:插入排序、选择排序、交换排序、归并排序、分配排序,适用于记录个数不很多的小文件。
其中,插入排序主要包括直接插入排序和希尔(Shell)排序两种;选择排序主要包括直接选择排序和堆排序;交换排序主要包括冒泡排序和快速排序。
外排序则适用于记录个数太多,不能一次将其全部记录放入内存的大文件。
直接插入排序:
#include <iostream.h>
void main()
{
int ARRAY[10]={0,6,3,2,7,5,4,9,1,8};
int i,j;
for(i=0;i<10;i++)
{
cout<<ARRAY[i]<<" ";
}
cout<<endl;
for(i=2;i<=10;i++)
{
if(ARRAY[i]<ARRAY[i-1])
{
ARRAY[0]=ARRAY[i];
j=i-1;
do
{
ARRAY[j+1]=ARRAY[j];
j--;
} while (ARRAY[0]<ARRAY[j]);
ARRAY[j+1]=ARRAY[0];
}
}
for (i=0;i<10;i++)
{
cout<<ARRAY[i]<<" ";
}
cout<<endl;
}