给出n个数,你要将这n个数从小到大排序输出
输入第一行,一个整数n接下来n行,每行一个整数.输出从小到大输出这n个数,每个数占一行要用freePascal做,我是个新手,请用最简单的方式告诉我,最好加上注释!...
输入第一行,一个整数n 接下来n行,每行一个整数.输出从小到大输出这n个数,每个数占一行
要用free Pascal做,我是个新手,请用最简单的方式告诉我,最好加上注释! 展开
要用free Pascal做,我是个新手,请用最简单的方式告诉我,最好加上注释! 展开
展开全部
冒泡法
#define NUM n/*n为数据个数*/
void main()
int a[NUM],i,j,t;
scanf("%d",&a[i]);/*输入数据,用tab键隔开*/
for(i=0;i<NUM;i++)
procedure sort(l,r: longint);
var i,j,x,y: longint;
begin
i:=l; j:=r; x:=a[(l+r) div 2];
repeat
while a[i]<x do inc(i);
while x<a[j] do dec(j);
if i<=j then
算法稳定性
冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的。
如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。
展开全部
int a[1000],n,i,j;
scanf('%d',@n);
prinft('%d/n',n);
for( i=0;i<=n;i++)
{ scanf('%d',@a[i]);}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(a[j]>a[j+1])
m=a[j];
a[j]=a[j+1];
a[j+1]=m;
}
for( i=0;i<=n;i++)
{ prinft('%d',a[i]);}
scanf('%d',@n);
prinft('%d/n',n);
for( i=0;i<=n;i++)
{ scanf('%d',@a[i]);}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(a[j]>a[j+1])
m=a[j];
a[j]=a[j+1];
a[j+1]=m;
}
for( i=0;i<=n;i++)
{ prinft('%d',a[i]);}
追问
拜托,大哥,我说的是free Pascal语言啊,你那是c吧
追答
看错了,不过思想是一样的,循环输入,冒泡排序,循环输出,你可以看楼下的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var
a:array[1..1000] of integer;
n,i,j,t:integer;
begin
readln(n);
for i:=1 to n do
read(a[i]);
for i:=1 to n-1 do
for j:=n-1 downto i do
if a[j]>a[j+1] then
begin
t:=a[j];a[j]:=a[j+1];a[j+1]:=t;
end;
for i:=1 to n do
write(a[i],' ');
writeln
end.
a:array[1..1000] of integer;
n,i,j,t:integer;
begin
readln(n);
for i:=1 to n do
read(a[i]);
for i:=1 to n-1 do
for j:=n-1 downto i do
if a[j]>a[j+1] then
begin
t:=a[j];a[j]:=a[j+1];a[j+1]:=t;
end;
for i:=1 to n do
write(a[i],' ');
writeln
end.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询