文档创建于:2010-01-30 // 本程序实现: 对直接插入排序的理解测试,每句执行语句之后都有相关的输出说明。 // The begining of C program: test.c. // Header files included. #include <stdio.h> // 简单排序: 直接插入排序 // 将数组 data[1] ~ data[n] 中的n个整数按照非递减有序的方式进行排列 void Insertsort ( int data[ ], int n ) { int i, j, flag; for ( i=2; i<=n; i++ ) { printf ( "/n/ti = %2d 时进行的外循环:/n",i ); flag = 1; if ( data[i] < data[i-1] ) { data[0] = data[i]; printf ( "/t/tdata[%2d]->data[0]",i ); data[i] = data[i-1]; printf ( "/tdata[%2d-1]->data[%2d]",i,i ); printf ( "/n/t/t内层插入排序:/n/t/t" ) for ( j=i-2; data[j]>data[0]; j--,flag++ ) { data[j+1] = data[j]; if ( flag%5 == 0 ) { printf ( "/n/t/t" ); } printf ( "data[%2d]->data[%2d+1]/t",j,j ); } data[j+1] = data[0]; printf ( "data[0]->data[%2d+1]/n",j ); } } } // Main function's declaration. int main ( void ) { int i, n=20, tag=1; int array[21]; // 对实参数组赋初值,一共有21个数组元素,编号从0到20 for ( i=1; i<=20; i++ ) { array[21-i] = i; } array[0] = 0; printf ("/n主函数中设定的实参数组的值:从array[1]到array[20]/n"); for ( i=1; i<=20; i++,tag++ ) { printf ( "array[%2d]=%d/t",i,array[i] ); if ( tag%5 == 0 ) { printf ( "/n" ); } } printf ( "/n" ); // 调用子函数:直接插入排序法函数 printf ( "调用子函数:直接插入排序法函数。实参array[]数组传值到形参data[]数组/n" ); Insertsort ( array, n ); // 主函数调用结束 printf ( "主函数调用成功,程序结束,返回0值作为标记./n/n" ); return 0; } // The end of C program: test.c.