求冒泡法 matlab程序(降序)用两个for循环

求冒泡法 matlab程序(降序)用两个for循环,第1张

#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个数进行降序排序并存入数组中,然后输入一个数,查找该数是否在数组中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9794443.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存