求助
void InsertSort(Edge r[],int n){
int i,j;
for(i=2;i<n;i++)
{
if(r.w<r.w)
{
r=r;
j=i-1;
while(r.w<r.w&&j>=1)
{
r=r;
j=j-1;
}
r=r;
}
}
}
void Kruskal(MGraph g)
{
int i,j,u1,v1,sn1,sn2,k;
int vset;
Edge E;
k=0;
printf("克鲁斯卡尔算法:\n");
for(i=0;i<g.n;i++)
for(j=0;j<g.n;j++)
if(g.edges!=0&&g.edges!=INF)
{
E.u=i;
E.v=j;
E.w=g.edges;
k++;
}
InsertSort(E,g.e);
for(i=0;i<g.n;i++)
vset=i;
k=1;
j=0;
while(k<g.n)
{
u1=E.u;
v1=E.v;
sn1=vset;
sn2=vset;
if(sn1!=sn2)
{
printf("边(%d,%d)权为:%d\n",u1,v1,E.w);
k++;
for(i=0;i<g.n;i++)
if(vset==sn2)
vset=sn1;
}
j++;
}
}
怎么修改 你好!看到你的代码,我注意到你在InsertSort函数中只提供了给定的参数类型,而没有说明Edge是什么类型,所以我无法具体了解你的需求。不过,我可以给你一些一般的插入排序的实现方法。
插入排序是一种简单直观的排序算法,它通过将未排序的元素逐个插入到已排序的部分来进行排序。下面是一个示例代码:
++
void InsertSort(int arr[], int n)
{
for (int i = 1; i < n; i++)
{
int key = arr;
int j = i - 1;
while (j >= 0 && arr > key)
{
arr = arr;
j--;
}
arr = key;
}
}
在这个示例中,我们假设你要对一个整型数组进行排序。函数的参数包括一个整型数组arr和数组的长度n。它使用一个for循环遍历未排序部分的元素,从第二个元素开始,将其与已排序的部分比较,并将其插入到正确的位置。
希望这个示例代码能对你有所帮助!如果你有其他问题,我会尽力帮助你。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]