插入排序(insert sort):
插入排序是最简单和最基础的排序算法之一,插入排序由N-1趟排序组成。对于P=1趟到P=N-1趟,插入排序保证从位置0到P为有序状态,插入排序的时间性能为O(N*N),空间复杂度为O(1)。在实际情况下,如果原有序列有大多数部分是有序的,那么插入排序将运行的很快。下面代码原始序列是随机产生的,对随机产生的序列进行排序,结果输出。代码均通过VS2008编译通过。
/************************************************************************/
/* copyright@Fisher Wang */
/* function @Insert Sort */
/* data @04/21/2013 */
/************************************************************************/
#include <iostream>
#include <Windows.h>
#include <ctime>
#define ARR_CAP 10
void InsertSort(int data[],size_t N)
{
int p=N-1,j;
for (int i = 1;i<=p;++i)
{
int temp = data[i];
for ( j = i;j>0&&data[j-1]>temp;--j)
{
data[j]=data[j-1];
}
data[j]=temp;
}
return;
}
int main ( void )
{
int arr[ARR_CAP]={0};
for (int i = 0;i<ARR_CAP;++i)
{
arr[i]=(int)GetTickCount()%100;
Sleep(10);
}
std::cout<<"original arr:"<<std::endl;
for (int i = 0;i<ARR_CAP;++i)
{
printf("%d ",arr[i]);
}
printf("\n");
std::cout<<"after insert sort arr:"<<std::endl;
InsertSort(arr,ARR_CAP);
for (int i = 0;i<ARR_CAP;++i)
{
printf("%d ",arr[i]);
}
printf("\n");
system("pause");
return 0;
}