计算机程序设计

排序在编程技术:排序“泡沫”

冒泡排序,不仅被认为是最快的方法,而且,它关闭的组织最慢的方式列表。 但是,它有它的优势。 因此,分拣泡沫的方法 - 最,无论是自然的和逻辑的解决问题的办法,如果你想安排在一个特定的顺序的项目。 一个普通人手动,例如,它会使用它们 - 只是凭直觉。

凡做了这样一个不寻常的名字吗?

方法名字出现了,用在水中气泡的比喻。 这是一个比喻。 正如小气泡向上上升 - 因为它们的密度比流体(在这种情况下 - 水)更大,并且每个阵列元素,较小它是值越逐渐的方式向列表编号的顶部。

该算法的说明

如下进行冒泡排序:

  • 第一遍:阵列号的元素采取的是两对,并且还比较。 如果两个人团队第一个值的一些元素是大于第二,该方案使他们的交流场所;
  • 因此, 最大数目的未命中的数组的末尾。 而所有其它元件保持,因为他们在一个混乱的方式,并需要更多的排序;
  • 因此需要一个第二遍:它通过与类似于由前面的(已经描述),并具有许多比较 - 减一;
  • 在通道数三个比较,比第二个更小,并且两个,比第一。 依此类推;
  • 总结,每个通道具有(通道数)比较(所有的数组中的值,特定的数)减去。

程序的更短的算法可以写为:

  • 数的数组进行检查,只要任何两个数字被发现,他们的第二势必会大于第一;
  • 不正确地定位在相对于所述阵列的软件互换的元件彼此。

伪代码基于描述的算法

最简单的实现进行如下:

Sortirovka_Puzirkom程序;

开始

周期从nachalnii_indexkonechii_index 焦耳 ;

周期对于inachalnii_indexkonechii_index-1;

如果马西沃[I]>马西沃[I + 1](第一元件比第二大),则:

(变化会在值);

结束

当然,这种简单只会加重情况:该算法越简单,越体现所有的缺陷。 时间投资比例过大,即使是小型阵列(这里来的相对论:时间对于外行的金额看起来很小,但实际上每一秒,甚至毫秒数程序员)。

它采取了更好的实现。 例如,考虑到值的阵列位置的交换:

Sortirovka_Puzirkom程序;

开始

sortirovka = TRUE;

循环直到sortirovka = TRUE;

sortirovka = FALSE;

周期对于inachalnii_indexkonechii_index-1;

如果马西沃[I]>马西沃[I + 1](第一元件比第二大),则:

(改变元件的地方);

sortirovka = TRUE; (确定了交流已作出)。

结束。

限制

主要缺点 - 过程的持续时间。 多少时间进行 排序算法 泡沫?

前置时间从平方数的数量计算出的阵列中的 - 它的最终结果是成比例的。

如果最坏情况下的阵列被多次传递,因为它具有减一个值的元素。 这是因为到底有只有一个元素是,这没有什么可比较,最后穿过阵列变得无用动作。

此外,分选一个简单的交换,因为它被调用时,仅对于小尺寸的阵列的有效方法。 与过程的帮助大量的数据将无法正常工作:在结果可能是一个错误或程序故障。

尊严

冒泡排序是很容易理解的。 在其阵列的顺序元素的研究技术大学的课程通过摆在首位。 该方法很容易实现两个Delphi编程语言(L(DELPHI),以及C / C ++(C / C加正),定位算法以正确的顺序,并在一个非常简单的值 帕斯卡(帕斯卡)。 冒泡排序是理想的初学者。

由于算法的缺点是没有课外目的。

视觉排序原则

阵列8 22 4 74 44 37 1 7的初始视图

步骤1 8 22 4 74 44 37 1 7

8 22 4 74 44 1 37 7

8 22 4 74 1 44 37 7

8 22 4 1 74 44 37 7

8 22 1 4 74 44 37 7

8 1 22 4 74 44 37 7

1 8 22 4 74 44 37 7

步骤2 1 8 22 4 74 44 7 37

1 8 22 4 74 7 44 37

1 8 22 4 7 74 44 37

1 8 22 4 7 74 44 37

1 8 4 22 7 74 44 37

1 4 8 22 7 74 44 37

步骤3 1 4 8 22 7 74 37 44

1 4 8 22 7 37 74 44

1 4 8 22 7 37 74 44

1 4 8 7 22 37 74 44

1 4 7 8 22 37 74 44

步骤4 1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

步骤5 1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

步骤6 1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

步骤7 1 4 7 8 22 37 44 74

以帕斯卡冒泡排序示例

例如:

常量kol_mas = 10;

VAR马西沃:阵列[1..kol_mas]整数;

A,B,k为整数;

开始

writeln( '输入',kol_mas, '数组的元素');

为:= 1到kol_mas做readln(马西沃[A ]);

为:= 1到kol_mas-1做开始

对于b:= A + 1至kol_mas不开始

如果马西沃并[a]>马西沃[ B]然后开始

K:=马西沃[A]; 马西沃[A]:=马西沃[ B]; 马西沃并[b]:= K;

结束;

结束;

结束;

writeln( '后排序');

为:= 1到kol_mas做writeln(马西沃[A ]);

结束。

实施例气泡在C语言分选(C)

例如:

的#include

的#include

INT主(INT的argc,字符* argv的[])

{

INT马西沃[8] = {36,697,73,82,68,12,183,88},I,FF;

为(;;){

FF = 0;

对于(I = 7; I> 0; I - ){

如果(马西沃[I] <马西沃 [校正1]){

交换(马西沃[I],马西沃 [校正1]);

FF ++;

}

}

如果(FF == 0)断裂;

}

的getch(); //显示延迟

返回0;

}。

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 zhcn.birmiss.com. Theme powered by WordPress.