非科班出身的我,只能通过坚持和努力来弥补后天的不足,尽量拉小跟同行的差距,所以我打算在跳槽的黄金季节,开始写作的第一篇,废话不多说,直接进入主题--Java常见的冒泡排序法
冒泡排序法(Bubble Sort)是所有排序算法中最简单、最基本的一种。冒泡排序法的思路就是交换排序,通过相邻数据的交换来达到排序目的。
原理:
1、对数组中的各数据,依次比较相邻的两元素的大小。
2、如果前面的数据大于后面的数据,就交换这两个数据。经过第一轮的多次比较排序后,变可把最小的数据排好。
3、再用同样的方法把剩下的数据逐个进行比较,最后便可按照从小到大的顺序排好数组各数据的顺序。
代码:
void bubbleSort(int[] datas) {
int temp;
for (int i = 1; i < datas.length; i++) {
for (int j = 0; j < datas.length - i; j++) {
if (datas[j] > datas[j + 1]) {
temp = datas[j];
datas[j] = datas[j + 1];
datas[j + 1] = temp;
}
}
}
}
优化方法,当两两比较后没有发生交换,那么在下一次就不用再去比较,所以代码可以优化为
void bubbleSort(int[] datas) {
int temp;
for (int i = 1; i < datas.length; i++) {
boolean flag=true;
for (int j = 0; j < datas.length - i; j++) {
if (datas[j] > datas[j + 1]) {
flag=false;
temp = datas[j];
datas[j] = datas[j + 1];
datas[j + 1] = temp;
}
}
if ( flag )
break;
}
}
这里暂时不对时间复杂度和空间复杂度做分析,后续会更新该文章。
网友评论