//第一种写法:
#include <iostream>
using namespace std;
void bubbleSort(int arr[], int n)
{
for (int i = 0; i < n-1; ++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 };
int n = sizeof(arr)/sizeof(int);
bubbleSort(arr,n);
for (int i = 0; i < n; 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-1; ++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 };
int n = sizeof(arr)/sizeof(int);
bubbleSort(arr,n);
for (int i = 0; i < n; i++)
cout << arr[i];
cout << endl;
getchar();
getchar();
return 0;
}
// 第二种写法的总结:
//
// 这种写法的思想是:从数组的最后一个元素进行和之前所有的元素进行比较,只一次内层的循环,将最小的数字放到第一位;接下来是执行第二次的内层循环,将第二小的的放到第二位,依次将数组从小到大排列。
//
// 总结:以上两种是将元素从小到大进行排列,也可以从大到小进行排列,归根到底:编程算法是将数学的思想通过编程语言来是实现;编程到最后会总结成一种思想,这种思想是不分语言的。