版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guitarrain/article/details/77988832
冒泡排序
定义
笔试中有时会碰到手写冒泡排序的题目,并没有多难只是工作中不常用一时写不出来.现在来理清一下思路.
这是百度百科对冒泡排序的定义,让我们从定义开始吧!
这段话最核心的内容是:循环走访,两两比较.可以理解成三个动作:
1. 循环遍历,每次循环找出最大的数放到数列顶端.
2. 找出被比较的两个对象.
3. 根据比较结果,判断是否需要交换.
代码
public class BubbleSort {
public static void main(String[] args) {
//定义数组
int[] s = {2,1,5,3,6,9,4};
//调用冒泡排序方法
sort(s);
for (int bubble : s) {
System.out.print(bubble + " ");
}
}
private static void sort(int[] s) {
for(int i = 1;i < s.length;i++) {//1.循环走访
for(int j = 0;j < s.length - i;j++) {//2.两两比较
if(s[j] > s[j + 1]) {
exChange(s, j);//3.冒泡
}
}
}
}
private static void exChange(int[] s, int j) {
int temp;
temp = s[j];
s[j] = s[j + 1];
s[j + 1] = temp;
}
}
最后输出排序结果:
1 2 3 4 5 6 9
- 第一次层for循环是走访的次数,一个长度为n的数组循环n-1才能将所有数字排序;
- 第二层for循环是表示每次走访,要进行多少次两两比较;
- 根据排序方式交换被比较的两个数.