冒泡排序
大学学习数据结构与算法最开始的时候,就讲了冒泡排序;可见这个排序算法是多么的经典。冒泡排序是一种非常简单的排序算法,它重复地走访过要排序的数列,每一次比较两个数,按照升序或降序的规则,对比较的两个数进行交换。比如现在我要对以下数据进行排序:
10 3 8 0 6 9 2
当使用冒泡排序进行升序排序时,排序的步骤是这样的:
3 10 8 0 6 9 2 // 10和3进行对比,10>3,交换位置
3 8 10 0 6 9 2 // 10再和8进行对比,10>8,交换位置
3 8 0 10 6 9 2 // 10再和0进行对比,10>0,交换位置
……
3 8 0 6 9 2 10 // 这个时候,10到达了最右边,是最大的数字,此时,我们在从头开始进行对比
3 8 0 6 9 2 10 // 3小于8,所以不用交换位置
3 0 8 6 9 2 10 // 8大于0,所以交换位置
……
0 2 3 6 8 9 10
很简单,就是让大数沉入下面,小数慢慢上浮起来。冒泡排序的时间复杂度也为O(n^2)。
代码实现
#include <iostream> using namespace std; void BubbleSort(int arr[], int length) { int temp; for (int i = 0; i < length; ++i) { for (int j = 0; j < length - i - 1; ++j) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } int main() { int arr[10] = {2, 4, 1, 0, 8, 4, 8, 9, 20, 7}; BubbleSort(arr, sizeof(arr) / sizeof(arr[0])); for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) { cout<<arr[i]<<" "; } cout<<endl; return 0; }
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。