冒泡排序:
冒泡排序重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。
走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
算法分析:
时间复杂度:
最好情况:O(n)
最坏情况:O(n^2)
平均情况:O(n^2)
算法稳定性:稳定排序算法
代码实现:
class Solution {
public:
void sort(vector<int>& A) {
for(int i=0;i<A.size();i++) {
for(int j=0;j<A.size()-1-i;j++) {
if(A[j] > A[j+1]) {
int tmp = A[j];
A[j] = A[j+1];
A[j+1] = tmp;
}
}
}
}
};