1、打开visual C++ 6.0,准备一个空白的c语言文件,引入头文件,在main函数中定义变量和数组:
2、接下来用scanf函数输入的10个数,将输入的数存入到变量a中,接着进行比较排序,如果后一个数比前一个数大则利用中间变量t实现俩值互换,最后输出排序的结果:
3、编译运行程序,输入任意的10个数,回车后即可看到排序后的结果。以上就是c语言中选择排序的用法:
function u1=select(u)%u是输入,u1是输出
%选择函数
%从i等于1到10计算适应度函数赋值给y
for i=1:10
y(i)=syd(u(i,:))
end
%求y的和
F=sum(y)
%并将适应度函数赋值除以他的和
P=y/F
s=0
%Q为累计概率
for i=1:10
s=s+P(i)
Q(i)=s
end
%找到y中的最大值的值m和位置I
[m,I]=max(y)
取输入的u总I的解赋值给u1中第9个解的位置
u1(9,:)=u(I,:)
取输入的u总I的解赋值给u1中第10个解的位置
u1(10,:)=u(I,:)
%得到一个8行1列的随机数(0-1之间)
r=rand(8,1)
%对应i等于1到8
for i=1:8
%如果r的第i个随机数小于Q的第一个值
if r(i)<Q(1)
%u的第一个解赋值给u1的第i个解
u1(i,:)=u(1,:)
%否则如果r的第i个随机数大于Q的第一个值,并且r的第i个随机数大于Q的第二个值
elseif r(i)>=Q(1)&r(i)<Q(2)
%u的第二个解赋值给u1的第i个解
u1(i,:)=u(2,:)
elseif r(i)>=Q(2)&r(i)<Q(3)
u1(i,:)=u(3,:)
elseif r(i)>=Q(3)&r(i)<Q(4)
u1(i,:)=u(4,:)
elseif r(i)>=Q(4)&r(i)<Q(5)
u1(i,:)=u(5,:)
elseif r(i)>=Q(5)&r(i)<Q(6)
u1(i,:)=u(6,:)
elseif r(i)>=Q(6)&r(i)<Q(7)
u1(i,:)=u(7,:)
elseif r(i)>=Q(7)&r(i)<Q(8)
u1(i,:)=u(8,:)
elseif r(i)>=Q(8)&r(i)<Q(9)
u1(i,:)=u(9,:)
else
u1(i,:)=u(10,:)
end
end
选择排序法:public class TSort{
public static void main(String args[]){
int a[]={12,45,2,5,26,56}
for(int i=0i<a.length-1i++){
int t
for(int j=i+1j<a.lengthj++){
if(a[i]>a[j]){
t=a[i]a[i]=a[j]a[j]=t
}
}
}
for(int i=0i<a.lengthi++){
System.out.print(a[i]+" ")
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)