关于fortran冒泡法~排序4个数~完整源码.关系到小弟幸福~谢谢高手拉!

作者&投稿:褚泡 (若有异议请与网页底部的电邮联系)
C语言中选择排序和冒泡排序的区别是什么?哪位大侠教教小弟~

是这样的
区别主要在交换的方式上

每一轮都把最大或最小的元素筛选出来放在相应的位置上
这是相同的
但是
对于每一轮
比如第一轮
要把1~n 中最大的那个放到n这个位置
冒泡法每次比较和移动相邻的两项
而选择排序每次交换当前项和第n项
我把代码写出来你就懂了:
冒泡:
for i:=1 to n-1 do
if (a[i]>a[i+1]) then swap(i,i+1);
选择:
for i:=1 to n-1 do
if (a[i]>a[n]) then swap(i,n);
(swap 表示交换)

总的来说,两种排序比较的次数是相同的
但交换的次数,选择排序是更少的
虽然两者的时间复杂度都是 O(n^2)
但通常,选择排序更快一点参考资料:http://hi.baidu.com/yukunlinykl/blog/item/56f3986e768fe5db81cb4a17.html

简单说下,你的这段程序没有问题,是正确的。
void main()
{
int a[20000];
int key;

srand(time(0));
random(a, 20000); //为什么产生的随机数开始时都是1~100的范围? 看后面的注解。
display(a, 20000); //为什么显示没有排序的?这里先显示没有打印的数据。如果你不需要,可以把这行删了。
sort(a, 20000); //为什么等半秒时间?因为这里进行冒泡排序,排序很慢,所以要等半秒。
display(a, 20000); //为什么显示20000个排好序的是60~99的范围的随机数?因为这行要求显示的。
scanf("%d",&key);
}

void random(int a[], int n)
{
int i;
for(i=0;i<n;i++)
a[i] = rand()%100; //为什么产生的随机数开始时都是1~100的范围?因为这里把每个数%100了,改为a[i] = rand();就可以了。
}

IMPLICIT NONE
CHARACTER::CC*4='ABCD',C1
REAL::A(4),Z
INTEGER::I,J
WRITE(*,*) '请输入A、B、C、D四个数:'
READ(*,*) A
DO I=1,4-1
DO J=I+1,4
IF(A(J)>A(I))THEN
Z=A(I); A(I)=A(J); A(J)=Z
C1=CC(I:I); CC(I:I)=CC(J:J); CC(J:J)=C1
ENDIF
ENDDO
ENDDO
WRITE(*,*) '四个数从大到小的次序为:'
WRITE(*,*) (CC(I:I),'=',A(I),' ',I=1,4)
END
! 已经上机通过调试,请放心使用。

codeblocks环境下fortran编程实现冒泡排序
答:fortran编程实现冒泡排序(由大到小)源代码如下:implicit noneinteger::i,j,Nreal*8::x(8)real*8::tmpx=[1,2,3,4,5,6,7,8]N=size(x)do i=1,N-1do j=i+1,Nif(x(j)x(i))thentmp=x(i)x(i)=x(j)x(j)=tmpend ifend doend dodo i=1,Nprint *, x(i)end do编译、...

fortran中用子例过程将3×5的二维数组的每一行按升序排序,要求用冒泡排 ...
答:我这种算法既节省时间又节省空间。我是这样实现的:将每行从第二个元素开始全部和第一个元素相加。然后排序时每行第一个元素从小到大记录和,而第二个元素则记录该和属于某行。///刚才有点问题,现在改了---望采纳,谢谢

关于fortran冒泡法~排序4个数~完整源码.关系到小弟幸福~谢谢高手拉!
答:IMPLICIT NONE CHARACTER::CC*4='ABCD',C1 REAL::A(4),Z INTEGER::I,J WRITE(*,*) '请输入A、B、C、D四个数:'READ(*,*) A DO I=1,4-1 DO J=I+1,4 IF(A(J)>A(I))THEN Z=A(I); A(I)=A(J); A(J)=Z C1=CC(I:I); CC(I:I)=CC(J:J); CC(J:J)=C1 ...

fortran调用冒泡子函数对二维数组排序出错,具体程序如下
答:在C语言中,二维数组按行存储,对每一行排序很方便,可以把每一行当成一个一维数组,使用排序函数直接进行排序。 然而对每一列进行排序,就不能直接当成一维数组进行排序。但是仍然可以把第j列a[0...M-1][j]在逻辑上当成一维数组进行排序,下面以使用冒泡排序为例对其排序。 对二维数组按列排序后,...

FORTRAN语言:用冒泡法排序将N个数(即动态一维数组)从大到小排列...
答:real*8 :: a(n)real*8 :: temp integer :: i,j do i=1,n-1 do j=i+1,n if (a(i) .lt. a(j)) then temp = a(i)a(i) = a(j)a(j) = temp endif enddo enddo

输入n个数,找出大于平均值的数和最小数 fortran编程
答:冒泡排序冒泡排序:BubbleSort基本概念冒泡排序的基本概念是:依次比较相邻的两个数,将大数放在前面,小数放在后面。即首先比较第1个和第2个数,将大数放前,小数放后。然后比较第2个数和第3个数,将大数放前,小数放后,如此继续,直至比较最后两个数,将大数放前,小数放后,此时第一趟结束,在...

Fortran,快速排序,非整数,子程序
答:你可以直接把整数的快排里的Integer改为Real啊:)这多简单:)

我们考试FORTRAN 90的一道题:一维数组a中存放了10个整数,要求对这10个...
答:做一个简单的冒泡排序即可,程序如下,望及时采纳!program main implicit none integer :: a(10) = (/ 1, 3, 5, 2, 12, 9, 6, 25, 7, 10 /)integer :: i, j, temp do i=1, 10 temp = a(i)do j=i+1, 10 if (a(j) < a(i)) then temp = a(j)a(j) = a(i)...

输入N个数并排序,注意是任意N个数,不是确定的数,而且不能输入n急急急...
答:不熟悉Basic。写了一段fortran代码。算法要点:1、排序不是难点。手工输入的,个数n必然不大,因而用冒泡排序就足够了。2、解决n值的获取问题。一般读入n个数之后,总需要一个终止输入的标记,比如输入一个特定数值,或者一个特定的键值。特定数值的方法不可行,因为任何数值都可以被认为是n个数当中的...

想问一下影响fortran计算速度的因素都有哪些
答:影响fortran计算速度的,无非从三点来考虑:电脑性能,算法,语法。计算机性能 I7的CPU跟I5的CPU计算速度肯定不一样。对机械硬盘进行读写的速度肯定比不上对SSD硬盘读写。算法 同样是比较大小,冒泡排序法肯定要比穷举法速度要快。好的计算逻辑能节省不少时间。同样的,如果计算机支持并行计算,那么并行计算...