函数 fun 的功能是:用插入排序法将n个字符进行排序(降序)。(提示: 插入法排序的思路是:先对数组的头

函数 fun 的功能是:用插入排序法将n个字符进行排序(降序)。(提示: 插入法排序的思路是:先对数组的头两个元素进行排序, 然后根据前两个元素的情况插入第三个元素,再插入第四个元素…)。

最好用C语言 编程,因为课程设计需要谢谢!

一定正确,可以运行!!前几天刚写的···
#include <stdio.h>
int num;
void fun(int a[],int num)
{

int i,t,j;
printf("请输入你喜欢的数:\n");
for(i=0;i<num;i++)
scanf("%d",&a[i]);

for (i=1;i<num;i++)
{
j=i;
while(j>=1)
{
if(a[j-1]>a[j])
{
t=a[j-1];
a[j-1]=a[j];
a[j]=t;
}
j--;
}

}

}

void main()
{
int m;
int a[100];
printf("您要输入几个数:");
scanf("%d",&num);
fun( a, num);
printf("从小到大输出数字:\n");
for (m=num-1;m>=0;m--)
{
printf("%d \n",a[m]);
}

}追问

谢谢你大哥了!!!!!!!!!!!!

追答

不可能啊,是用c++运行的吧?我刚试过,还可以的啊!!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-11
public class exe2
{
public static void Main()
{
int[] a =;
int i, j, m;
for (i = 0; i < 10; i++)
{
m = a[i];
j = i - 1; //0 or i?
while (j >= 0 && m > a[j])//判断当前下标的数是否大于前一个
{
a[j + 1] = a[j]; //如果当前下标大于前一个把前一个往后移一个位置
j--;
}
a[j + 1] = m; //当不大于前一个的时候就把M的值放到这个下标下面 j+1 是为了下标减到最前时考虑 -1 + 1 还是下标的最前面
}
for (i = 0; i < 10; i++)
{
Console.WriteLine("", a[i]);
Console.Read();
}
}
}

答案是出来了,但是希望只供参考,最好是自己动手写写,然后一步一步的跟踪程序。
做网站会不会用到排序,要看你做的什么类型的网站,排序是基础多掌握一些比不掌握要好。

希望自己多动手,提问时不要直接问答案。
第2个回答  2011-06-01
用插入法对数组a进行降序排序. int[] a ={ 4, 7, 1, 2, 5, 8,console.writeline(
第3个回答  2011-06-01
void fun(int A[], int num)
{
//插入
for(int i=1;i<num;i++)
{
for(int j=0;j<i;j++)
{
if(A[j]>A[i]){
A[j] = A[j] + A[i];
A[i] = A[j] - A[i];
A[j] = A[j] - A[i];
}
}
}
}追问

哥哥能不呢个详细点!!!!我是菜鸟!!!!

追答

#include
#include
void ReadMessage(int *x, int total)
{
unsigned int i;
for(i=0;i<total;i++)
{
printf("请输入第%d个数字:",i+1);
scanf("%d", &x[i]);
}

}

void swap(int &a, int &b)
{
int t;
t = a;
a = b;
b = t;
}

void SortMessage(int A[], int num)
{
//插入
for(int i=1;i<num;i++)
{
for(int j=0;j<i;j++)
{
if(A[j]<A[i]){
swap(A[j],A[i]);
}
}
}

}

void WriteMessage(int *x, int total)
{
unsigned int i;
for(i=0;i<total;i++)
{
printf("%d\t, x[i]);
}
}

int main()
{
int num[10];
ReadMessage(num, 10);
SortMessage(num, 10);
WriteMessage(num, 10);
}

追问

调试还是有问题啊 !!!!!!!!!!!!

追答

#include
#include
void ReadMessage(int *x, int total)
{
unsigned int i;
for(i=0;i<total;i++)
{
printf("请输入第%d个数字:",i+1);
scanf("%d", &x[i]);
}

}

void swap(int &a, int &b)
{
int t;
t = a;
a = b;
b = t;
}

void SortMessage(int A[], int num)
{
//插入
for(int i=1;i<num;i++)
{
for(int j=0;j<i;j++)
{
if(A[j]<A[i]){
swap(A[j],A[i]);
}
}
}

}

void WriteMessage(int *x, int total)
{
unsigned int i;
for(i=0;i<total;i++)
{
printf("%d\t", x[i]);
}
}

int main()
{
int num[10];
ReadMessage(num, 10);
SortMessage(num, 10);
WriteMessage(num, 10);
}

追问

LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/Cpp1.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.

Cpp1.exe - 1 error(s), 0 warning(s)

追答

//你应该开始自己独立想想问题,不要太依赖别人
int main()
{
int num[10];
ReadMessage(num, 10);
SortMessage(num, 10);
WriteMessage(num, 10);
return 0;//加个返回值试试
}

本回答被网友采纳