给出n个数,你要将这n个数从小到大排序输出

输入第一行,一个整数n接下来n行,每行一个整数.输出从小到大输出这n个数,每个数占一行要用freePascal做,我是个新手,请用最简单的方式告诉我,最好加上注释!... 输入第一行,一个整数n 接下来n行,每行一个整数.输出从小到大输出这n个数,每个数占一行
要用free Pascal做,我是个新手,请用最简单的方式告诉我,最好加上注释!
展开
 我来答
帐号已注销
2021-10-11 · TA获得超过77万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:162万
展开全部

冒泡法

#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

算法稳定性

冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的。

如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。

skymabo1992
2014-08-28 · 超过28用户采纳过TA的回答
知道答主
回答量:156
采纳率:0%
帮助的人:52.2万
展开全部
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]);}
追问
拜托,大哥,我说的是free Pascal语言啊,你那是c吧
追答
看错了,不过思想是一样的,循环输入,冒泡排序,循环输出,你可以看楼下的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户71336
推荐于2016-12-02 · TA获得超过101个赞
知道答主
回答量:119
采纳率:0%
帮助的人:164万
展开全部
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.
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式