氣泡排序


在氣泡排序中,將陣列的每個元素與其相鄰元素進行比較,此演算法處理傳遞中的列表。 具有n個元素的列表需要n-1次傳遞以進行排序。 考慮一個n個元素的陣列A,其元素將使用氣泡排序進行排序。演算法處理如下。

在第1遍時,A[0]A[1]進行比較,A[1]A[2]進行比較,A[2]A[3]進行比較,依此類推。 在第1遍結束時,列表的最大元素放在列表的最高索引處。

在第2遍時,A[0]A[1]進行比較,A[1]A[2]進行比較,依此類推。 在第2遍結束時,列表的第二大元素位於列表的第二高索引處。
在通過n-1遍時,A[0]A[1]進行比較,A[1]A[2]進行比較,依此類推。 在這個傳球結束時。列表的最小元素放在列表的第一個索引處。

演算法:

第1步 : 重複第2步,從i = 0 到 N-1
第2步 : 重複 J = i + 1 到 N - I
第3步 : IF A[J] > A[i]
        SWAP A[J] 和 A[i]
        [結束內迴圈]
    [結束外迴圈]
第4步 : EXIT

複雜度

情況 複雜度
空間 O(1)
最壞情況執行時間 O(n^2)
平均情況執行時間 O(n)
最好情況執行時間 O(n^2)

C語言實現氣泡排序演算法 -

#include<stdio.h>  
void main ()  
{  
    int i, j,temp;   
    int a[10] = { 10, 9, 7, 101, 23, 44, 12, 78, 34, 23};   
    for(i = 0; i<10; i++)  
    {  
        for(j = i+1; j<10; j++)  
        {  
            if(a[j] > a[i])  
            {  
                temp = a[i];  
                a[i] = a[j];  
                a[j] = temp;   
            }   
        }   
    }   
    printf("Printing Sorted Element List ...\n");  
    for(i = 0; i<10; i++)  
    {  
        printf("%d\n",a[i]);  
    }  
}

執行上面範例程式碼,得到以下結果 -

Printing Sorted Element List . . . 
7
9
10
12
23
34
34
44
78 
101

C++語言實現氣泡排序演算法 -

#include<iostream>  
using namespace std;  
int main ()  
{  
    int i, j,temp;   
    int a[10] = { 10, 9, 7, 101, 23, 44, 12, 78, 34, 23};   
    for(i = 0; i<10; i++)  
    {  
        for(j = i+1; j<10; j++)  
        {  
            if(a[j] < a[i])  
            {  
                temp = a[i];  
                a[i] = a[j];  
                a[j] = temp;   
            }   
        }   
    }   
    cout <<"Printing Sorted Element List ...\n";  
    for(i = 0; i<10; i++)  
    {  
        cout <<a[i]<<"\n";  
    }  
    return 0;  
}

執行上面範例程式碼,得到以下結果 -

Printing Sorted Element List ...
7
9
10
12
23
23
34
44
78
101

Java語言實現氣泡排序演算法 -

public class BubbleSort {  
    public static void main(String[] args) {  
    int[] a = {10, 9, 7, 101, 23, 44, 12, 78, 34, 23};  
    for(int i=0;i<10;i++)  
    {  
        for (int j=0;j<10;j++)  
        {  
            if(a[i]<a[j])  
            {  
                int temp = a[i];  
                a[i]=a[j];  
                a[j] = temp;   
            }  
        }  
    }  
    System.out.println("Printing Sorted List ...");  
    for(int i=0;i<10;i++)  
    {  
        System.out.println(a[i]);  
    }  
}  
}

執行上面範例程式碼,得到以下結果 -

Printing Sorted List . . . 
7
9
10
12
23
34
34
44
78 
101

C#語言實現氣泡排序演算法 -

using System;  

public class Program  
{  
    public static void Main()  
    {  
        int i, j,temp;   
    int[] a = {10, 9, 7, 101, 23, 44, 12, 78, 34, 23};   
    for(i = 0; i<10; i++)  
    {  
        for(j = i+1; j<10; j++)  
        {  
            if(a[j] > a[i])  
            {  
                temp = a[i];  
                a[i] = a[j];  
                a[j] = temp;   
            }   
        }   
    }   
    Console.WriteLine("Printing Sorted Element List ...\n");  
    for(i = 0; i<10; i++)  
    {  
        Console.WriteLine(a[i]);  
    }  
    }  
}

執行上面範例程式碼,得到以下結果 -

Printing Sorted Element List . . . 
7
9
10
12
23
34
34
44
78 
101

Python語言實現氣泡排序演算法 -

a=[10, 9, 7, 101, 23, 44, 12, 78, 34, 23]  
for i in range(0,len(a)):  
    for j in range(i+1,len(a)):  
        if a[j]<a[i]:  
            temp = a[j]  
            a[j]=a[i]  
            a[i]=temp  
print("Printing Sorted Element List...")  
for i in a:   
    print(i)

執行上面範例程式碼,得到以下結果 -

Printing Sorted Element List . . . 
7
9
10
12
23
34
34
44
78 
101

JavaScript語言實現氣泡排序演算法 -

<script>   
    var a = [10, 9, 7, 101, 23, 44, 12, 78, 34, 23];  
    for(i=0;i<10;i++)  
    {  
        for (j=0;j<10;j++)  
        {  
            if(a[i]<a[j])  
            {  
                 temp = a[i];  
                a[i]=a[j];  
                a[j] = temp;   
            }  
        }  
    }  
    txt = "<br>";  
    document.writeln("Printing Sorted Element List ..."+txt);  
    for(i=0;i<10;i++)  
    {  
        document.writeln(a[i]);  
        document.writeln(txt);  
    }  
    </script>

執行上面範例程式碼,得到以下結果 -

Printing Sorted Element List ...
7
9
10
12
23
23
34
44
78
101

PHP語言實現氣泡排序演算法 -

<?php  
    $a = array(10, 9, 7, 101, 23, 44, 12, 78, 34, 23);  
    for($i=0;$i<10;$i++)  
    {  
        for ($j=0;$j<10;$j++)  
        {  
            if($a[$i]<$a[$j])  
            {  
                 $temp = $a[$i];  
                $a[$i]=$a[$j];  
                $a[$j] = $temp;   
            }  
        }  
    }  
    echo "Printing Sorted Element List ...\n";  
    for($i=0;$i<10;$i++)  
    {  
        echo $a[$i];  
        echo "\n";  
    }  
?>

執行上面範例程式碼,得到以下結果 -

Printing Sorted Element List ...
7
9
10
12
23
23
34
44
78
101