冒泡排序
基本思想:每次比较两个相邻的元素 如果它们的顺序错误就把它们交换过来
重点:交换
时间复杂度为:O(n^2)(平均情况、最坏情况)
最优情况:输入的数组已经是完全有序的时候 冒泡排序只需要进行一次遍历即可确定数组已经排序完成
原理:每一趟只能确定将一个数归位
比如说 现在我们有 3 4 1 5 2 我们想将其升序(过程如下图)
我们第一趟就将5归位(放在最后) 归位好的数便不需要再比较 移动
第二趟将4归位
第三趟将3归位
其实我们这还有第四趟 将2归位 但我们这里恰好排好序 所以我就懒得画图了 这里提一下
总结:如果有n个数进行排序 我们只需将n-1个数归位(即进行n-1趟操作)
每一趟操作都需要从第1位(下标为0的位置)开始进行相邻两个数的比较
代码实现如下:
在这段代码中 我们需要注意的是
1.你的下标是从1开始还是从0开始 下标不同代表你的起始位置不同 循环条件不同 2.在交换过程中 我们让当前元素与下一元素比较 符合条件的便交换 假如你的数组大小刚好能存放下你的所有数(没有空余的空间) 这里j+1就会越界访问 会发生错误
比如上面的数组a[100]换成a[5] 这时候就会产生错误
3.for循环的循环条件在这里很重要 当然,当我们理解了冒泡排序的过程 我们也就不会搞错