#include<stdioh>
void main()
{
int a[20]={/这里百年填上数组的元素/};
int i,j,temp,k;
for(j=k=0;j<20;j++)
for(i=0;i<19-j;i++)
if(a[i]<a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
k++;
}
for(i=0;i<20;i++)
printf("%d ",a[i]);
printf("\n%d\n",k); / k代表次数/
}
#include <stdioh>
void sort1(int a[],int n)
{int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
void sort2(int a[],int n)
{int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(a[j]<a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
int main()
{int i,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
sort1(a,10);
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n\n");
sort2(a,10);
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
int main(void)
{
int i,j,array[20],temp;
printf("Input 20 integer:"); /输入20个整数/
for(i=0;i<20;i++)
scanf("%d",&array[i]);
printf("\n");
for(i=0;i<20;i++) /用双重循环,冒泡法排序/
for(j=i;j<20;j++)
if(array[i]<array[j])
{temp=array[i];array[i]=array[j];array[j]=temp;}
for(i=0;i<20;i++) /输出排序后的数组元素/
printf("%d\t",array[i]);
printf("\nInput integer:"); /输入一个整数/
scanf("%d",&temp);
for(i=0;i<20&&temp<=array[i];i++) /在排序后的数组中查找/
if(temp==array[i])
printf("array[%d] is needed\n",i); /在数组中有可能有相等的元素/
if(temp!=array[i-1])
printf("array[] have not the integer");/数组中没有所输入的数/
getch();
return 0;
}
程序运行结果:
Input 20 integer:1 2 3 4 5 66 77 33 22 33 4 66 4 8 7 6 55 33 222 20
222 77 66 66 55 33 33 33 22 20
8 7 6 5 4 4 4 3 2 1
Input integer:4
array[14] is needed
array[15] is needed
array[16] is needed
可令flag为相邻两数判断时乘上的系数,升序时为1,降序时为-1
这样 -a > -b 即等价于 a < b,就可将升序变为降序
具体代码和运行结果如下:
可见同一个函数,flag=1时实现了升序,flag=0时实现了降序,望采纳~
附源码链接:冒泡排序
#include <stdioh>
void main()
{
//用指针实现10个数的冒泡排序(从大到小)
int i,j,p,temp,arr[10];
p=arr;
printf("请输入10个数字:");
for(i=0;i<=9;i++)
scanf("%d",p+i);
printf("你输入的数字为:");
for(i=0;i<=9;i++)
printf("%d ",(p+i));
printf("\n");
for(i=0;i<=9;i++)
for(j=0;j<=9-i;j++)
if((p+j)<(p+j+1))
{
temp=(p+j+1);
(p+j+1)=(p+j);
(p+j)=temp;
}
printf("排序后的数字为:");
for(i=0;i<=9;i++)
printf("%d ",(p+i));
printf("\n");
}
冒泡法排序
#include<stdioh>
void main()
{
int a[9];
int i,j,temp;
printf("输入9个整数:\n\a");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<8;i++)
{
for(j=0;j<8-i;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
printf("排序结果:");
for(i=0;i<9;i++)
printf("%d\t ",a[i]);
}
int main(void)
{
int i,j,array[20],temp;
printf("Input 20 integer:"); /输入20个整数/
for(i=0;i<20;i++)
scanf("%d",&array[i]);
printf("\n");
for(i=0;i<20;i++) /用双重循环,冒泡法排序/
for(j=i;j<20;j++)
if(array[i]<array[j])
{temp=array[i];array[i]=array[j];array[j]=temp;}
for(i=0;i<20;i++) /输出排序后的数组元素/
printf("%d\t",array[i]);
printf("\nInput integer:"); /输入一个整数/
scanf("%d",&temp);
for(i=0;i<20&&temp<=array[i];i++) /在排序后的数组中查找/
if(temp==array[i])
printf("array[%d] is needed\n",i); /在数组中有可能有相等的元素/
if(temp!=array[i-1])
printf("array[] have not the integer");/数组中没有所输入的数/
getch();
return 0;
}
程序运行结果:
Input 20 integer:1 2 3 4 5 66 77 33 22 33 4 66 4 8 7 6 55 33 222 20
222 77 66 66 55 33 33 33 22 20
8 7 6 5 4 4 4 3 2 1
Input integer:4
array[14] is needed
array[15] is needed
array[16] is needed
以上就是关于求冒泡法 matlab程序(降序)用两个for循环全部的内容,包括:求冒泡法 matlab程序(降序)用两个for循环、c语言 用一个函数实现用冒泡法对十个整数升序和降序排列 麻烦写全些、用冒泡排序法对输入的10个数进行降序排序并存入数组中,然后输入一个数,查找该数是否在数组中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)