急求帮助,matlab编写程序起泡法对10个数由小到大排序

急求帮助,matlab编写程序起泡法对10个数由小到大排序,第1张

步骤如下:

clc

clear all

s=[9 8 4 2 7 10 6 1 5 3]; %要排序的数列

Ls=length(s);

for i=1:Ls-1

for j=1:Ls-i

if s(j)>s(j+1)

t=s(j);

s(j)=s(j+1);

s(j+1)=t;

end

end

end

s %输出排序后结果

注意事项

1安装出错时,可换注册码继续安装,到同一目录;

2谨记安装路径不要有中文名称;

3成功安装完毕之后,如果遇到matlab启动后,窗口在打开一到两秒后就自动关闭了, 可按以下方法试试:假设你安装的目录为c:\MATLAB\(不过不建议安装到C盘,那样会影响系统速度!)

参考资料来源:百度百科:MATLAB

#include<stdioh>

#include<mathh>

void paixu(int a,int n);

int issushu(int a);

void main()

{

int b[5][5];

int i,j,k=0;

int a[25];//存素数的一维数组

printf("请输入一个五行五列的二维整数数组:\n");

for(i=0;i<5;i++)

for(j=0;j<5;j++)

scanf("%d",&b[i][j]);

//开始判断,并将素数存到一维数组中

for(i=0;i<5;i++)

for(j=0;j<5;j++)

if(issushu(b[i][j]))

a[k++]=b[i][j];

//开始排序

paixu(a,k);

//开始输出

printf("\n二维数组中是素数的有:\n");

for(i=0;i<k;i++)

printf("%d ",a[i]);

printf("\n");

}

//交换

void swap(int a,int b)

{

int t;

t=a;

a=b;

b=t;

}

//从小到大排序

void paixu(int a,int n)

{

int i,j;

for(i=1;i<n-1;i++)

for(j=0;j<n-i;j++)

{

if(a[j]>a[j+1])

swap(a+j,a+j+1);

}

}

//判断是否是素数,是,返回1,否则,返回0

int issushu(int a)

{

int i;

for(i=2;i<=sqrt(a);i++)

if(a%i==0)

return 0;

return 1;

}

//程序我已经调试好了,不懂的可追问哦!

if(arr[i]>arr[i+1])

{

arr[i]=k;

arr[i]=arr[i+1];

arr[i+1]=k;

}

改为

if(arr[i]>arr[i+1])

{

k=arr[i];

arr[i]=arr[i+1];

arr[i+1]=k;

}

你的k初始为0,然后全都是0

#include <stdioh>

#include <stringh>

#define N 10

char str[N];

int main()

{

void sort(char []);

int i,len;

printf("input string:\n");

for( i=0;i<N-1;i++ ) //输入最多N-1个字符,遇回车结束,多余的数据忽略掉

{

str[i]=getchar();

if ( str[i]=='\n' )

break;

}

str[i]='\0';

len=i;

sort(str);

printf("string sorted:\n");

for (i=0;i<len;i++)

printf("%c",str[i]);

printf("\n");

return 0;

}

void sort(char str[])

{

int i,j,len;

char t;

for( len=0;str[len]!='\0';len++ ); //求串长度

for(j=1;j<len;j++)

for (i=0;i<len-1;i++)

if(str[i]>str[i+1])

{

t=str[i];

str[i]=str[i+1];

str[i+1]=t;

}

}

首先看看起泡法:所谓起泡法,就是将相邻的两个数作比较,如果第一个数比第二个数大,则进行交换,将小的调到前头,这样一趟比较下来,则小数上浮,最大的数沉到最底。可以推知,要对10个数进行排序,则需要进行9趟比较,才能使10个数按大小顺序排列。每一趟都要进行两个数之间的比较,在第一趟中,要比较9次,第二趟刚8次,依此类推,可以得知,如果有n个数,则要进行n-1趟比较,在第1趟比较中要进行n-1次两两比较,在第 j 趟比较中要进行 n-j 次两两比较。据此,列出代码如下:#include <stdioh>

int main()

{

int i,j,temp,a[11];

printf("enter data:\n");

for (i=1;i<=10;i++)

{

printf("a[%d]=",i);

scanf("%d",&a[i]);

}

printf("\n");

for (i=1;i<=10;i++)

printf("%5d",a[i]);

printf("\n");

for (j=1;j<=9;j++)

for (i=1;i<=9-j;i++)

{

if (a[i]>a[i+1])

{

temp=a[i];

a[i]=a[i+1];

a[i+1]=temp;

}

}

printf("\nthe sorted numbers:\n");

for (i=1;i<=10;i++)

printf("%5d",a[i]);

getch();

return 0;

}再来看看选择法:所谓选择法,就是将第一个数与余下的所有的数都进行比较,如果第一个数比其他数都小,则不进行交换,如果余下的数有一个以上比第一个数小,则将其中最大的一个与第一个数交换,这样一趟比较下来,第一个数就存放了最小的数。起泡法是最大数沉底,选择法是最小数坐头。据此,选择法代码如下:#include <stdioh>

int main()

{

int i,j,min,temp,a[11];

printf("enter data:\n");

for (i=1;i<=10;i++)

{

printf("a[%d]=",i);

scanf("%d",&a[i]);

}

printf("\n");

for (i=1;i<=10;i++)

printf("%5d",a[i]);

printf("\n");

for (i=1;i<=9;i++)

{

min=i;

for (j=i+1;j<=10;j++)

if (a[min]>a[j])

min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

printf("\nthe sorted numbers:\n");

for (i=1;i<=10;i++)

printf("%5d",a[i]);

getch();

return 0;

}

以上就是关于急求帮助,matlab编写程序起泡法对10个数由小到大排序全部的内容,包括:急求帮助,matlab编写程序起泡法对10个数由小到大排序、C语言程序 找出一二维数组中的所有素数,形成一个一维数组,并使用起泡法把素数数组有小到大排序。、以下是我的c程序,用起泡法从小到大的排序数组,我用的是win-tc开发环境,输出结果全为0,是什么原因等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存