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

输入第一行,一个整数n 接下来n行,每行一个整数.输出从小到大输出这n个数,每个数占一行
要用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

算法稳定性

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

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

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-08-28
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吧

追答

看错了,不过思想是一样的,循环输入,冒泡排序,循环输出,你可以看楼下的

第2个回答  推荐于2016-12-02
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.本回答被提问者和网友采纳

给出n个数,你要将这n个数从小到大排序输出
冒泡法 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 i...

c语言数组编程,输入n个整数,将这n个数按绝对值由大到小排序输出
{ if(i<n-1)printf("%d",a[i]);else printf("%d\n",a[n-1]);} return0;}

c语言编程:输入一个数字n,再输入n个数,将这个n个数从小到大输出。
scanf(输入n的值);\/\/输入个数 int array;\/\/把需排序的数列定义为数组。这里需要指出的是,如果定义为array[n-1],因为你的n在编译时未赋值,所以编译是不会通过的。于是这里直接将它定义为一个指针,赋值方法跟数组相同。但是个数太多就不能这么做了 for(i = 0;i < n;i++){ \/\/输入需要...

...对它们进行比较大小并把它们按从小到大的顺序输出
printf("请输入你要进行排序的数据个数\\n");scanf("%d",&n);\/\/录入要排列的数据 int * a;a = (int *)malloc(sizeof(int)*(n+1));printf("请输入你要排序的数据\\n");for(int i =0; i < n; i++){ scanf("%d", &a[i]);} printf("原始的数据排列是:\\n");for(int j...

c语言数组编程,输入n个整数,将这n个数按绝对值由大到小排序输出
printf("\\n"); return 0;}好了,调试通过,输入数组后,先打印排序前的数组,然后排序,之后输出排序后的数组。。。 本回答由网友推荐 举报| 答案纠错 | 评论 2 17 右手兂名指 采纳率:69% 来自团队:CppExpert 擅长: C\/C++ Linux 网站使用 其他回答 如上!!! dongsimin321 | 发布于2012-05-25 举报...

...有N个杂乱无序的整数,要求将这N个数从小到大排序后输出
int n = sizeof(arr) \/ sizeof(arr[0]);printf("排序前:");for (int i = 0; i < n; ++i) { printf("%d ", arr[i]);} printf("\\n");bubbleSort(arr, n);printf("排序后:");for (int i = 0; i < n; ++i) { printf("%d ", arr[i]);} printf("\\n");retu...

给定N个不同的整数,要求对这N个整数按如下规则排序并输出。
解释如下:对于这个问题,我们的目标是对给定的N个不同的整数进行排序。排序的基本思想是将这些整数按照从小到大的顺序重新排列。为了实现这一目标,我们可以采用多种排序算法。其中,常见的排序算法包括冒泡排序、选择排序、插入排序和快速排序等。这些算法都有各自的特点和适用场景。例如,冒泡排序和选择排序...

输入n个数。将这n个数按绝对值由大小排序输出
include<stdio.h> include<math.h> main(){ int a[50],n,i,j,t;printf("input n:");scanf("%d",&n);printf("input %d numbers:\\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++)if(abs(a[j])<abs(a[j+1])){t=a...

C++程序:输入n个数,将这些数从大到小排列输出
include<iostream>#include<window.h>using namespace std;int main(){ \/\/指定数组长度 int n; cin>>n; \/\/动态分配内存 int* p=new int[n]; \/\/顺序输入 for(int i=0;i<n;i++) cin>>p[i]; \/\/冒泡排序 int t=0; for(int i=1;i<n;i++) ...

给出n个整数,按从大到小的顺序排序,然后输出排序后的前m个整数.
{ int max,a[1010],i,j,n,m,temp;scanf("%d %d",&n,&m); \/\/(输入排序数字数量)for(i=0;i<n;i++)scanf("%d",&a[i]); \/\/(输入参与排序的数)for(i=0;i<n-1;i++) \/\/(n-1次筛选){max=i;for(j=i+1;j<n;j++) \/\/ if(a[j]>a[max]) max=j;temp=a[i]...

相似回答