冒泡排序(C++)
冒泡排序(C++):
原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,
这样一趟过去后,最大或最小的数字被交换到了最后一位,
然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子
例子:
3,4,0,8,0,1
3,4,0,8,0,1:3>4不用交换
3,4,0,8,0,1:4>0->交换->3,0,4,8,0,1
3,0,4,8,0,1 : 4<8->不用交换
3,0,4,8,0,1:8>0->交换->3,0,4,0,8,1
3,0,4,0,8,1 : 8>1->交换->3,0,4,0,1,8
3,0,4,0,1,8
0,3,4,0,1,8
0,3,4,0,1,8
0,3,0,4,1,8
0,3,0,1,4,8
.
.
.
以此类推
0,0,1,3,4,8 :最后结果
冒泡排序的时间复杂度也为O(n^2)。
代码实现:
1 template<typename Comparable> 2 void BubbleSort(vector<Comparable>&a) 3 { 4 int temp; 5 int j; 6 for (int i = 0;i < a.size();++i) 7 { 8 for (j = 0;j < a.size() - i - 1;++j) 9 { 10 if (a[j] > a[j + 1]) 11 { 12 temp = a[j]; 13 a[j] = a[j + 1]; 14 a[j + 1] = temp; 15 } 16 } 17 } 18 }//------------------------BubbleSort-end------------------ 19 20 int main() 21 { 22 vector<int> a = { 3,4,0,8,0,1 }; 23 BubbleSort(a); 24 for (auto c : a) 25 { 26 cout << c<<endl; 27 28 } 29 system("pause"); 30 31 }
时间: 2024-10-06 21:17:21