C语言 分别用冒泡,选择,插入对n个数进行排序。

2025-04-04 20:40:26
推荐回答(2个)
回答1:

//选择排序
#include
void main()
{int i,n,j,k,temp,a[100];
 printf("Input n:\n");
 scanf("%d",&n); 
 printf("Input the arry:\n");
 for(i=0;i  scanf("%d",&a[i]);
 for(i=0;i { k=i; /*给记号赋值*/ 
   for(j=i+1;j     if(a[k]>a[j]) k=j; /*是k总是指向最小元素*/ 
   if(i!=k)    /*当k!=i是才交换,否则a[i]即为最小*/
     { temp=a[i]; a[i]=a[k]; a[k]=temp;}
  }
 printf("After the arrangement:\n");
 for(i=0;i   printf("%d ",a[i]);
 printf("\n");
 }
//冒泡排序
#include
void main()
{int n,i,j,temp,a[100];
 printf("Input n:\n");
 scanf("%d",&n); 
 printf("Input the arry:\n");
 for(i=0;i  scanf("%d",&a[i]);
 for(j=n-1;j>0;j--)  //依次判断当前最大值,冒泡地将其放在最后的位置
 for(i=0;i    if(a[i]>a[i+1])   { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp;}
 printf("After the arrangement:\n");
 for(i=0;i   printf("%d ",a[i]);
 printf("\n");
 }

回答2:

#include
#defineSIZE8

voidbubble_sort(inta[],intn);

voidbubble_sort(inta[],intn)//n为数组a的元素个数
{
inti,j,temp;
for(j=0;j for(i=0;i {
if(a[i]>a[i+1])//数组元素大小按升序排列
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
intmain()
{
intnumber[SIZE]={95,45,15,78,84,51,24,12};
inti;
bubble_sort(number,SIZE);
for(i=0;i {
printf("%d",number[i]);
}
printf("\n");
}冒泡

#include
#include

void swap(int*a,int*b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void select_sort(int A[],intn)
{
register int i,j,min,m;
for(i=0;imin=i;//查找最小值
for(j=i+1;j{
if(A[min]>A[j])
{min=j;}
}
if(min!=i)
{
swap(&A[min],&A[i]);
printf("第%d趟排序结果为:\n",i+1);
for(m=0;m{
if(m>0){
printf("");
}
printf("%d",A[m]);
}
printf("\n");
}
}
}
int main(void)
{
int n;
while(scanf("%d",&n)!=EOF)
{
int i;
int*A=(int*)malloc(sizeof(int)*n);
for(i=0;i{
scanf("%d",&A[i]);
}
select_sort(A,n);
printf("最终排序结果为:\n");
for(i=0;i{
if(i>0){
printf("");
}
printf("%d",A[i]);
}
printf("\n");
}
return 0;
}选择

voidinsert_sort(int*array,unsignedintn)
{
inti,j;
inttemp;
for(i=1;i{
temp=*(array+i);
for(j=i;j>0&&*(array+j-1)>temp;j--)
{
*(array+j)=*(array+j-1);
}
*(array+j)=temp;
}
}插入