⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 查找.c

📁 有关数据结构的一些例子。用C语言编写的。非常有价值的程序。对初学者有指导借鉴意义。
💻 C
📖 第 1 页 / 共 3 页
字号:
	MERGEP1(a1,b1,length);
	length=2*length;
  }
 printf("对学号进行归并排序的结果为:\n");
 fun2(a1);
}

INSORT2(b2)             /*对年龄进行直接排序*/
person b2[];
{ int i,j;
  for(i=2;i<Q+1;i++)
   { b2[0]=b2[i];
     j=i-1;
     while(b2[0].age<b2[j].age)
       b2[j+1]=b2[j--];
       b2[j+1]=b2[0];
   }
  printf("对年龄进行直接排序的结果为:\n");
  fun2(b2);
}

BUBSORT2(b2)           /*对年龄进行起泡排序*/
person b2[];
{ int i,j,noswap;
  person temp;
  for(i=1;i<Q;i++)
   { noswap=1;
     for(j=Q-1;j>=i;j--)
       if(b2[j+1].age<b2[j].age)
	 { temp=b2[j+1];
	   b2[j+1]=b2[j];
	   b2[j]=temp;
	   noswap=0;
	 }
     if(noswap)
       break;
   }
  printf("对年龄进行起泡排序的结果为:\n");
  fun2(b2);
}

int PARTION2(b2,l,h)   /*对年龄进行快速排序*/
person b2[];
int l,h;
{ int i,j;
  person temp;
  i=l;  j=h;  temp=b2[i];
  do
   { while((b2[j].age>=temp.age) && (i<j))
       j--;
       if(i<j)
	     b2[i++]=b2[j];
     while((b2[i].age<=temp.age) && (i<j))
       i++;
       if(i<j)
	     b2[j--]=b2[i];
   } while(i!=j);
  b2[i]=temp;
  return(i);
}

QUISORT2(b2,s1,t1)
person b2[];
int s1,t1;
{ int i,j;
  if(s1<t1)
   { i=PARTION2(b2,s1,t1);
     QUISORT2(b2,s1,i-1);
     QUISORT2(b2,i+1,t1);
   }
  printf("对年龄进行快速排序的结果为:\n");
  fun2(b2);
}

selsort2(b2)                /*对年龄进行直接选择排序*/
person b2[];
{ int i,j,k;
  person temp;
  for(i=1;i<Q-1;i++)
  { k=i;
    for(j=i+1;j<Q;j++)
	  if(b2[j].age<b2[k].age)
		  k=j;
	  if(k!=i)
	  { temp=b2[i];
	    b2[i]=b2[k];
		b2[k]=temp;
      }
  }
  printf("对年龄进行直接选择排序的结果为:\n");
  fun2(b2);
}

SIFT2(b2,i,m)            /*对年龄进行堆排序*/
person b2[];
int i,m;
{ int j;
  person temp;
  temp=b2[i];
  j=2*i;
  while(j<=m)
  { if((j<m) && (b2[j].age<b2[j+1].age))
       j++;
    if(temp.age<b2[j].age)
	{ b2[i]=b2[j];
	  i=j;  j=2*i;
	}
	else
		break;
  }
  b2[i]=temp;
}

HEASORT2(b2)
person b2[];
{ int i,j;
  person temp;
  for(i=Q/2;i>=1;i--)
	  SIFT2(b2,i,Q);
  for(i=Q;i>=1;i--)
  { temp=b2[1];
    b2[1]=b2[i];
	b2[i]=temp;
    SIFT2(b2,1,i-1);
  }
  printf("对年龄进行堆排序的结果为:\n");
  fun2(b2);
}


MERGE2(b2,a2,low,mid,high)                  /*对年龄进行归并排序*/
person b2[];
person a2[];
int low,mid,high;
{ int i,j,k;
  low=1;  mid=Q/2+1;  high=Q;
  i=low;  j=mid;  k=low;
  while((i<=Q/2) && (j<=high))
	  if(b2[i].age<=b2[j].age)
		  a2[k++]=b2[i++];
	  else
		  a2[k++]=b2[j++];
	  while(i<=Q)
		  a2[k++]=b2[i++];
	  while(j<=Q)
		  a2[k++]=b2[j++];
}

MERGEP2(b2,a2,length)
person b2[];
person a2[];
int length;
{ int i,j;
  i=0;
  while(i+2*length-1<Q+1)
  {  MERGE2(b2,a2,i,i+length-1,i+2*length-1);
     i=i+2*length;
  }
  if(i+length-1<Q)
	  MERGE2(b2,a2,i,i+length-1,Q);
  else
	  for(j=i;j<Q+1;j++)
		  a2[j]=b2[j];
}

MERGES2(b2)
person b2[];
{ int length;
  length=1;
  while(length<Q+1)
  { MERGEP2(b2,a2,length);
    length=2*length;
	MERGEP2(a2,b2,length);
	length=2*length;
  }
 printf("对年龄进行归并排序的结果为:\n");
 fun2(a2);
}

INSORT3(b3)             /*对数据结构进行直接排序*/
person b3[];
{ int i,j;
  for(i=2;i<Q+1;i++)
   { b3[0]=b3[i];
     j=i-1;
     while(b3[0].cour[0]<b3[j].cour[0])
	   b3[j+1]=b3[j--];
       b3[j+1]=b3[0];
   }
  printf("对数据结构进行直接排序的结果为:\n");
  fun2(b3);
}

BUBSORT3(b3)           /*对数据结构进行起泡排序*/
person b3[];
{ int i,j,noswap;
  person temp;
  for(i=1;i<Q;i++)
   { noswap=1;
     for(j=Q-1;j>=i;j--)
       if(b3[j+1].cour[0]<b3[j].cour[0])
	 { temp=b3[j+1];
	   b3[j+1]=b3[j];
	   b3[j]=temp;
	   noswap=0;
	 }
     if(noswap)
       break;
   }
  printf("对数据结构进行起泡排序的结果为:\n");
  fun2(b3);
}

int PARTION3(b3,l,h)   /*对数据结构进行快速排序*/
person b3[];
int l,h;
{ int i,j;
  person temp;
  i=l;  j=h;  temp=b3[i];
  do
   { while((b3[j].cour[0]>=temp.cour[0]) && (i<j))
       j--;
       if(i<j)
	 b3[i++]=b3[j];
     while((b3[i].cour[0]<=temp.cour[0]) && (i<j))
       i++;
       if(i<j)
	 b3[j--]=b3[i];
   } while(i!=j);
  b3[i]=temp;
  return(i);
}

QUISORT3(b3,s1,t1)
person b3[];
int s1,t1;
{ int i,j;
  if(s1<t1)
   { i=PARTION3(b3,s1,t1);
     QUISORT3(b3,s1,i-1);
     QUISORT3(b3,i+1,t1);
   }
  printf("对数据结构进行快速排序的结果为:\n");
  fun2(b3);
}

selsort3(b3)                /*对数据结构进行直接选择排序*/
person b3[];
{ int i,j,k;
  person temp;
  for(i=1;i<Q-1;i++)
  { k=i;
    for(j=i+1;j<Q;j++)
	  if(b3[j].cour[0]<b3[k].cour[0])
		  k=j;
	  if(k!=i)
	  { temp=b3[i];
	    b3[i]=b3[k];
		b3[k]=temp;
      }
  }
  printf("对数据结构进行直接选择排序的结果为:\n");
  fun2(b3);
}


SIFT3(b3,i,m)            /*对数据结构进行堆排序*/
person b3[];
int i,m;
{ int j;
  person temp;
  temp=b3[i];
  j=2*i;
  while(j<=m)
  { if((j<m) && (b3[j].cour[0]<b3[j+1].cour[0]))
       j++;
    if(temp.cour[0]<b3[j].cour[0])
	{ b3[i]=b3[j];
	  i=j;  j=2*i;
	}
	else
		break;
  }
  b3[i]=temp;
}

HEASORT3(b3)
person b3[];
{ int i,j;
  person temp;
  for(i=Q/2;i>=1;i--)
	  SIFT3(b3,i,Q);
  for(i=Q;i>=1;i--)
  { temp=b3[1];
    b3[1]=b3[i];
	b3[i]=temp;
    SIFT3(b3,1,i-1);
  }
  printf("对数据结构进行堆排序的结果为:\n");
  fun2(b3);
}

MERGE3(b3,a3,low,mid,high)                  /*对数据结构进行归并排序*/
person b3[];
person a3[];
int low,mid,high;
{ int i,j,k;
  low=1;  mid=Q/2+1;  high=Q;
  i=low;  j=mid;  k=low;
  while((i<=Q/2) && (j<=high))
	  if(b3[i].cour[0]<=b3[j].cour[0])
		  a3[k++]=b3[i++];
	  else
		  a3[k++]=b3[j++];
	  while(i<=Q)
		  a3[k++]=b3[i++];
	  while(j<=Q)
		  a3[k++]=b3[j++];
}

MERGEP3(b3,a3,length)
person b3[];
person a3[];
int length;
{ int i,j;
  i=0;
  while(i+2*length-1<Q+1)
  {  MERGE3(b3,a3,i,i+length-1,i+2*length-1);
     i=i+2*length;
  }
  if(i+length-1<Q)
	  MERGE3(b3,a3,i,i+length-1,Q);
  else
	  for(j=i;j<Q+1;j++)
		  a3[j]=b3[j];
}

MERGES3(b3)
person b3[];
{ int length;
  length=1;
  while(length<Q+1)
  { MERGEP3(b3,a3,length);
    length=2*length;
	MERGEP3(a3,b3,length);
	length=2*length;
  }
 printf("对数据结构进行归并排序的结果为:\n");
 fun2(a3);
}

INSORT4(b4)             /*对概率进行直接排序*/
person b4[];
{ int i,j;
  for(i=2;i<Q+1;i++)
   { b4[0]=b4[i];
     j=i-1;
     while(b4[0].cour[1]<b4[j].cour[1])
       b4[j+1]=b4[j--];
       b4[j+1]=b4[0];
   }
  printf("对概率进行直接排序的结果为:\n");
  fun2(b4);
}

BUBSORT4(b4)            /*对概率进行起泡排序*/
person b4[];
{ int i,j,noswap;
  person temp;
  for(i=1;i<Q;i++)
   { noswap=1;
     for(j=Q-1;j>=i;j--)
       if(b4[j+1].cour[1]<b4[j].cour[1])
	 { temp=b4[j+1];
	   b4[j+1]=b4[j];
	   b4[j]=temp;
	   noswap=0;
	 }
     if(noswap)
       break;
   }
  printf("对概率进行起泡排序的结果为:\n");
  fun2(b4);
}

int PARTION4(b4,l,h)       /*对概率进行快速排序*/
person b4[];
int l,h;
{ int i,j;
  person temp;
  i=l;  j=h;  temp=b4[i];
  do
   { while((b4[j].cour[1]>=temp.cour[1]) && (i<j))
       j--;
       if(i<j)
	 b4[i++]=b4[j];
     while((b4[i].cour[1]<=temp.cour[1]) && (i<j))
       i++;
       if(i<j)
	 b4[j--]=b4[i];
   } while(i!=j);
  b4[i]=temp;
  return(i);
}

QUISORT4(b4,s1,t1)
person b4[];
int s1,t1;
{ int i,j;
  if(s1<t1)
   { i=PARTION4(b4,s1,t1);
     QUISORT4(b4,s1,i-1);
     QUISORT4(b4,i+1,t1);
   }
  printf("对概率进行快速排序的结果为:\n");
  fun2(b4);
}

selsort4(b4)                /*对概率进行直接选择排序*/
person b4[];
{ int i,j,k;
  person temp;
  for(i=1;i<Q-1;i++)
  { k=i;
    for(j=i+1;j<Q;j++)
	  if(b4[j].cour[1]<b4[k].cour[1])
		  k=j;
	  if(k!=i)
	  { temp=b4[i];
	    b4[i]=b4[k];
		b4[k]=temp;
      }
  }
  printf("对概率进行直接选择排序的结果为:\n");
  fun2(b4);
}

SIFT4(b4,i,m)            /*对概率进行堆排序*/
person b4[];
int i,m;
{ int j;
  person temp;
  temp=b4[i];
  j=2*i;
  while(j<=m)
  { if((j<m) && (b4[j].cour[1]<b4[j+1].cour[1]))
       j++;
    if(temp.cour[1]<b4[j].cour[1])
	{ b4[i]=b4[j];
	  i=j;  j=2*i;
	}
	else
		break;
  }
  b4[i]=temp;
}

HEASORT4(b4)
person b4[];
{ int i,j;
  person temp;
  for(i=Q/2;i>=1;i--)
	  SIFT4(b4,i,Q);
  for(i=Q;i>=1;i--)
  { temp=b4[1];
    b4[1]=b4[i];
	b4[i]=temp;
    SIFT4(b4,1,i-1);
  }
  printf("对概率进行堆排序的结果为:\n");
  fun2(b4);
}

MERGE4(b4,a4,low,mid,high)                  /*对概率进行归并排序*/
person b4[];
person a4[];
int low,mid,high;
{ int i,j,k;
  low=1;  mid=Q/2+1;  high=Q;
  i=low;  j=mid;  k=low;
  while((i<=Q/2) && (j<=high))
	  if(b4[i].cour[1]<=b4[j].cour[1])
		  a4[k++]=b4[i++];
	  else
		  a4[k++]=b4[j++];
	  while(i<=Q)
		  a4[k++]=b4[i++];
	  while(j<=Q)
		  a4[k++]=b4[j++];
}

MERGEP4(b4,a4,length)
person b4[];
person a4[];
int length;
{ int i,j;
  i=0;
  while(i+2*length-1<Q+1)
  {  MERGE4(b4,a4,i,i+length-1,i+2*length-1);
     i=i+2*length;
  }
  if(i+length-1<Q)
	  MERGE4(b4,a4,i,i+length-1,Q);
  else
	  for(j=i;j<Q+1;j++)
		  a4[j]=b4[j];
}

MERGES4(b4)
person b4[];
{ int length;
  length=1;
  while(length<Q+1)
  { MERGEP4(b4,a4,length);
    length=2*length;
	MERGEP4(a4,b4,length);
	length=2*length;
  }
 printf("对概率进行归并排序的结果为:\n");
 fun2(a4);
}

INSORT5(b5)             /*对外语进行直接排序*/
person b5[];
{ int i,j;
  for(i=2;i<Q+1;i++)
   { b5[0]=b5[i];
     j=i-1;
     while(b5[0].cour[2]<b5[j].cour[2])
       b5[j+1]=b5[j--];
       b5[j+1]=b5[0];
   }
  printf("对外语进行直接排序的结果为:\n");
  fun2(b5);
}

BUBSORT5(b5)             /*对外语进行起泡排序*/
person b5[];
{ int i,j,noswap;
  person temp;
  for(i=1;i<Q;i++)
   { noswap=1;
     for(j=Q-1;j>=i;j--)
       if(b5[j+1].cour[2]<b5[j].cour[2])
	 { temp=b5[j+1];
	   b5[j+1]=b5[j];
	   b5[j]=temp;
	   noswap=0;
	 }
     if(noswap)
       break;
   }
  printf("对外语进行起泡排序的结果为:\n");
  fun2(b5);
}

int PARTION5(b5,l,h)       /*对外语进行快速排序*/
person b5[];
int l,h;
{ int i,j;
  person temp;
  i=l;  j=h;  temp=b5[i];
  do
   { while((b5[j].cour[2]>=temp.cour[2]) && (i<j))
       j--;
       if(i<j)
	 b5[i++]=b5[j];
     while((b5[i].cour[2]<=temp.cour[2]) && (i<j))
       i++;
       if(i<j)
	 b5[j--]=b5[i];
   } while(i!=j);
  b5[i]=temp;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -