学习算法ing,准备先把严蔚敏老师的data structure中提到的几个排序算法实现一下,以下只是个人为方便以后回顾所写,切莫相信:
首先简单的插入排序:
首先简单的插入排序:
以a[0]做哨岗位,从2到N依次把要比较的数先放到a[0],若待排序的第J个数小于已排好的J-1个数,把j-1个数往后挪动直到a[0]>=a[j],停住。因为a[0]总是等于要比较的数,所以不用担心会越界;
#include<stdio.h>
int a[1000];
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(j=2;j<=n;j++)
{
if(a[j]<a[j-1])
{
a[0]=a[j];
for(i=j-1;a[i]>a[0];i--)
{
a[i+1]=a[i];
}
a[i+1]=a[0];
}
}
for(i=1;i<=n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}