您的位置:首页 > 编程语言 > Java开发

Java语言基础-排序算法-冒泡排序

2016-11-09 11:26 211 查看
排序的分类:

选择排序(直接选择排序、堆排序)

交换排序(冒泡排序、快速排序)

插入排序(直接插入排序、二分法排序、Shell排序)

归并排序

若有下列int类型数组需要排序:

int[] arr = {2,9,6,7,4,1};

冒泡排序(Bubble Sort)

基本思路:对未排序的各元素从头到尾以此比较相邻的2个元素大小关系,若于则交换位置,经过第一轮比较排序后可以得出最大值,然后使用同样的方法把剩下的元素逐个比较即可。

可以看出有n个元素,那么一共要进行n-1轮比较.(若6个元素,要进行6-1轮比较,第一轮比较6-1次,第三轮比较6-3次)

// 冒泡排序,分析,找规律
public static void bubbleSort(int[] arr){
// 第一轮
for (int i=1; i<=arr.length-1; i++){
if (arr[i-1] > arr[i]){
int tmp = arr[i-1];
arr[i-1] = arr[i];
arr[i] = tmp;
}
}
// 第二轮
for (int i=1; i<=arr.length-2; i++){
if (arr[i-1] > arr[i]){
int tmp = arr[i-1];
arr[i-1] = arr[i];
arr[i] = tmp;
}
}
// 第二轮
for (int i=1; i<=arr.length-3; i++){
if (arr[i-1] > arr[i]){
int tmp = arr[i-1];
arr[i-1] = arr[i];
arr[i] = tmp;
}
}
// 第三轮...
// ....
}


找到规律了,以上代码整理如下:

/**
* 冒泡排序
* @param arr
*/
public static void bubbleSort(int[] arr){
for (int times=1; times<=arr.length; times++){
for (int i=1; i<=arr.length-times; i++){
if (arr[i-1] > arr[i]){
int tmp = arr[i-1];
arr[i-1] = arr[i];
arr[i] = tmp;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java
相关文章推荐