急求帮助,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

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

int main()

{

int i,j,temp,a[11]

printf("enter data:\n")

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

{

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

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

}

printf("\n")

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

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

printf("\n")

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

for (i=1i<=9-ji++)

{

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=1i<=10i++)

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

getch()

return 0

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

int main()

{

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

printf("enter data:\n")

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

{

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

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

}

printf("\n")

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

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

printf("\n")

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

{

min=i

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

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

min=j

temp=a[i]

a[i]=a[min]

a[min]=temp

}

printf("\nthe sorted numbers:\n"郑戚敬)

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

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

getch()

return 0

}


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

原文地址: http://outofmemory.cn/yw/12551935.html

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

发表评论

登录后才能评论

评论列表(0条)

保存