C++冒泡排序算法实例
冒泡排序
大学学习数据结构与算法最开始的时候,就讲了冒泡排序;可见这个排序算法是多么的经典。冒泡排序是一种非常简单的排序算法,它重复地走访过要排序的数列,每一次比较两个数,按照升序或降序的规则,对比较的两个数进行交换。比如现在我要对以下数据进行排序:
10380692
当使用冒泡排序进行升序排序时,排序的步骤是这样的:
31080692 //10和3进行对比,10>3,交换位置
38100692 //10再和8进行对比,10>8,交换位置
38010692 //10再和0进行对比,10>0,交换位置
……
38069210 //这个时候,10到达了最右边,是最大的数字,此时,我们在从头开始进行对比
38069210 //3小于8,所以不用交换位置
30869210 //8大于0,所以交换位置
……
02368910
很简单,就是让大数沉入下面,小数慢慢上浮起来。冒泡排序的时间复杂度也为O(n^2)。
代码实现
#include<iostream> usingnamespacestd; voidBubbleSort(intarr[],intlength) { inttemp; for(inti=0;i<length;++i) { for(intj=0;j<length-i-1;++j) { if(arr[j]>arr[j+1]) { temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } } intmain() { intarr[10]={2,4,1,0,8,4,8,9,20,7}; BubbleSort(arr,sizeof(arr)/sizeof(arr[0])); for(inti=0;i<sizeof(arr)/sizeof(arr[0]);++i) { cout<<arr[i]<<""; } cout<<endl; return0; }