c语言语法简单问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 01:30:59
运行不能通过,TC说下面一句有错误但是我没发现,请指教:a[]={503,17,512,908,170,897,275,653,462,154,509,612,677,765,703,94};
/*希尔排序:算法思想简单描述: */
/*在直接插入排序算法中,每次插入一个数,使有序序列只增加1个节点,*/
/*并且对插入下一个数没有提供任何帮助。如果比较相隔较远距离(称为 */
/*增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除 */
/*多个元素交换。D.L.shell于1959年在以他名字命名的排序算法中实现 */
/*了这一思想。算法先将要排序的一组数按某个增量d分成若干组,每组中 */
/*记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量 */
/*对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成 */
/*一组,排序完成。 */
/*下面的函数是一个希尔排序算法的一个实现,初次取序列的一半为增量, */
/*以后每次减半,直到增量为1。 */
/*希尔排序是不稳定的。*/

#include <stdio.h>
#define MAX 16
void shell_sort(int *x, int n)
{
int h, j, k, t;
for (h=n/2; h>0; h=h/2) /*控制增量*/
{
for (j=h; j<n; j++) /*这个实际上就是上面的直接插入排序*/
{
t=*(x+j);
for (k=j-h; (k>=0 && t<*(x+k)); k-=h)
{
*(x+k+h)=*(x+k);
}
*(x+k+h)=t;
}
}
}
void main()
{

现定义了a[max]就不能再通过a[]这样来给数组赋值了,你定义时就赋值,不用max,比如:
int a[]={503,17,512,908,170,897,275,653,462,154,509,612,677,765,703,94};
也可以和用户交换,用new产生合适大小的数组