1. 程式人生 > >氣泡排序的N種寫法

氣泡排序的N種寫法

第一種寫法:

#include <iostream>  
using namespace std;


void bubbleSort(int arr[], int n)
{
for (int i = 0; i < n; ++i)
{
int temp = 0;
for (int j = i+1; j <n; j++)
{
if (arr[i] > arr[j])
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}


int main()
{
int arr[] = { 1, 4, 7, 3, 2, 8, 5, 0, 6 };
bubbleSort(arr, 9);
for (int i = 0; i < 9; i++)
cout << arr[i];
cout << endl;
getchar();
getchar();
return 0;
}

第一種寫法的總結:

這種寫法的思想是: 第一個元素和後面的所有元素比較,內層迴圈一輪結束,就可以將最大的數放到最後;接下來是執行第二次內層的迴圈,將已經排序之後的陣列(已經排列好最大的數字)的第二大的數字放到倒數第二位;接下來是依次將大數放到後面。

第二種寫法:

#include <iostream>  
using namespace std;


void bubbleSort(int arr[], int n)
{
for (int i = 0; i < n; ++i)
{
int temp = 0;
for (int j = n-1; j >i; j--)
{
if (arr[j] < arr[j-1])
{
temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
}


int main()
{
int arr[] = { 1, 4, 7, 3, 2, 8, 5, 0, 6 };
bubbleSort(arr, 9);
for (int i = 0; i < 9; i++)
cout << arr[i];
cout << endl;
getchar();
getchar();
return 0;
}

第二種寫法的總結:

       這種寫法的思想是:從陣列的最後一個元素進行和之前所有的元素進行比較,只一次內層的迴圈,將最小的數字放到第一位;接下來是執行第二次的內層迴圈,將第二小的的放到第二位,依次將陣列從小到大排列。

總結:以上兩種是將元素從小到大進行排列,也可以從大到小進行排列,歸根到底:程式設計演算法是將數學的思想通過程式語言來是實現;程式設計到最後會總結成一種思想,這種思想是不分語言的。