冒泡排序的两种写法

  • Post author:
  • Post category:其他


//第一种写法:

#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;

}

// 第二种写法的总结:

//

//     这种写法的思想是:从数组的最后一个元素进行和之前所有的元素进行比较,只一次内层的循环,将最小的数字放到第一位;接下来是执行第二次的内层循环,将第二小的的放到第二位,依次将数组从小到大排列。

//

//     总结:以上两种是将元素从小到大进行排列,也可以从大到小进行排列,归根到底:编程算法是将数学的思想通过编程语言来是实现;编程到最后会总结成一种思想,这种思想是不分语言的。



版权声明:本文为In_Zihuatanejo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。