看到第二章的标题,有点激动,终于可以开始学习算法了,第一个算法,插入排序。
输入要求:随机输入N个(a,b,c,d,e......)数。
输出要求:输出这N个数的一个重新排序(要求:(a<=b<=c<=d<=e......)或(a>=b>=c>=d>=e......))
算法代码如下(C语言版)
#include<stdio.h>
#define Max 100 //定义排序的数的个数.
int n;
int a[Max];//将要排序的数组,以及排序的个数定义为全局变量.
int main()
{
int i;
void InsertSort(int [],int n);//插入排序算法的声明.
while(scanf("%d",&n)==1)
{
if(n>100)
{
printf("The N is too big !\n");
continue;
}//超过最大个数跳过,继续下一次进程.
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
InsertSort(a,n);
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
return 0;
}
/* 插入排序算法的核心 */
void InsertSort(int b[],int n)
{
int i,j,key;
for(i=1;i<n;i++)
{
key=b[i];//当前未插入进去的数.
j=i-1;
while(key<b[j]&&j>=0)
{
b[j+1]=b[j];
j--;
}
b[j+1]=key;//将此数插入到相应的位置.
}
}
这是《算法导论》中的第一个算法,应该好好注意,毕竟,只有把基础知识学好才会在以后的学习中更加得心应手!
(坚持)
Never Give Up !