计算机, 程序设计
排序在编程技术:排序“泡沫”
冒泡排序,不仅被认为是最快的方法,而且,它关闭的组织最慢的方式列表。 但是,它有它的优势。 因此,分拣泡沫的方法 - 最,无论是自然的和逻辑的解决问题的办法,如果你想安排在一个特定的顺序的项目。 一个普通人手动,例如,它会使用它们 - 只是凭直觉。
凡做了这样一个不寻常的名字吗?
方法名字出现了,用在水中气泡的比喻。 这是一个比喻。 正如小气泡向上上升 - 因为它们的密度比流体(在这种情况下 - 水)更大,并且每个阵列元素,较小它是值越逐渐的方式向列表编号的顶部。
该算法的说明
如下进行冒泡排序:
- 第一遍:阵列号的元素采取的是两对,并且还比较。 如果两个人团队第一个值的一些元素是大于第二,该方案使他们的交流场所;
- 因此, 最大数目的未命中的数组的末尾。 而所有其它元件保持,因为他们在一个混乱的方式,并需要更多的排序;
- 因此需要一个第二遍:它通过与类似于由前面的(已经描述),并具有许多比较 - 减一;
- 在通道数三个比较,比第二个更小,并且两个,比第一。 依此类推;
- 总结,每个通道具有(通道数)比较(所有的数组中的值,特定的数)减去。
程序的更短的算法可以写为:
- 数的数组进行检查,只要任何两个数字被发现,他们的第二势必会大于第一;
- 不正确地定位在相对于所述阵列的软件互换的元件彼此。
伪代码基于描述的算法
最简单的实现进行如下:
Sortirovka_Puzirkom程序;
开始
周期从nachalnii_index到konechii_index 焦耳 ;
周期对于i从nachalnii_index到konechii_index-1;
如果马西沃[I]>马西沃[I + 1](第一元件比第二大),则:
(变化会在值);
结束
当然,这种简单只会加重情况:该算法越简单,越体现所有的缺陷。 时间投资比例过大,即使是小型阵列(这里来的相对论:时间对于外行的金额看起来很小,但实际上每一秒,甚至毫秒数程序员)。
它采取了更好的实现。 例如,考虑到值的阵列位置的交换:
Sortirovka_Puzirkom程序;
开始
sortirovka = TRUE;
循环直到sortirovka = TRUE;
sortirovka = FALSE;
周期对于i从nachalnii_index到konechii_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