在氣泡排序中,將陣列的每個元素與其相鄰元素進行比較,此演算法處理傳遞中的列表。 具有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