冒泡排序法

冒泡排序法

冒泡排序法,一個計算機專用名詞,是指按要求從大到小或從小到大排序。

目的

按要求從大到小或從小到大排序。

基本思路

對尚未排序的各元素從頭到尾依次比較相鄰的兩個元素是否逆序(與欲排順序相反),若逆序就交換這兩元素,經過第一輪比較排序後便可把最大(或最小)的元素排好,然後再用同樣的方法把剩下的元素逐個進行比較,就得到了你所要的順序。可以看出如果有 n 個元素,那么一共要進行 n-1 輪比較,第 i 輪要進行 j=n-i 次比較。(如:有5個元素,則要進行5-1輪比較。第3輪則要進行5-3次比較)

實例

下面以C語言為例子給大家一個明確的表示:
 #include<stdio.h>
void main()
{
int a&#91;10&#93;;
int i,j,t;
printf("輸入10個整數:\n");
for( i = 0; i < 10; i ++ )
scanf("%d",&a&#91; i &#93;); //依次輸入10個整數
for( j = 0; j < 9; j ++ ) //進行9輪排序 即n-1次
{
for( i = 0; i < 9-j; i ++) //每輪進行n-1-j 次比較,最多n-1-j 次交換
if( a&#91; i &#93; > a&#91; i + 1 &#93; )
{
t = a&#91; i &#93; ;
a&#91; i &#93; = a&#91; i + 1 &#93;; //大的沉底向a&#91;9&#93;(依次)逼進
a&#91; i + 1 &#93; = t;
}
}
printf("排序結果:");
for( i = 0; i < 10; i ++ ) //依次輸出排序結果
printf("%d\t",a&#91; i &#93;);
printf("\n");
}
PASCAL為例子
procedure Bubble_Sort(var L:List);
vari,j:position;
begin
for i:=First(L) to Last(L)-1 do
for j:=First(L) to Last(L)-i do
if L&#91;j&#93;>L&#91;j+1&#93; then 4 swap(L&#91;j&#93;,L&#91;j+1&#93;);
//交換L&#91;j&#93;和L&#91;j+1&#93;
end;
下面使用c++語言編寫
#include<iostream>
using namespace std;
void main()
{
int a&#91;9&#93;,i,j,temp;
cout<<"請輸入數字:"<<endl;
for(i=0;i<9;i++)
cin>>a&#91;i&#93;; //依次輸入n個整數
for(i=0;i<9;i++)
{
for(j=i+1;j<9;j++)
if(a&#91;i&#93;<a&#91;j&#93;) //利用臨時變數temp交換順序
{
temp=a&#91;j&#93;;
a&#91;j&#93;=a&#91;i&#93;;
a&#91;i&#93;=temp;
}
}
for(i=0;i<9;i++)
cout<<a&#91;i&#93;<<&#039; &#039;; //依次輸出結果
system("pause");
}
下面使用Visual Basic編寫
Option Explicit
Private Sub Form_Load()
Dim a, c As Variant
Dim i As Integer, temp As Integer, w As Integer
a = Array(12, 45, 17, 80, 50)
For i = 0 To Ubound(a) - 1
If (a(i) > a(i + 1)) Then &#039;若是遞減,改為a(i)<a(i+1)
temp = a(i)
a(i) = a(i + 1)
a(i + 1) = temp
End If
Next
For Each c In a
Print c;
Next
End Sub

相關詞條

相關搜尋

熱門詞條

聯絡我們