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

java之冒泡排序

2016-05-03 17:35 411 查看
1 . 什么是冒泡排序?

网上查了点资料,也没有找到什么有用的概念,大致的意思都是 相邻的两个数两两做比较。根据相应的规则(比较大的往后放或比较小的往后放)放置两数的位置:

规则:大的数往后靠
比较前: 2,1
比较后: 1,2


2 . 实战

假设有这样一个数组

int arr[] ={ 2,5,1,4,3,6 }


冒泡排序是这样排的:

规则:小的往后靠
拿第一个数开始与其后面的做比较。
第一次比较:
2<5  true  所以 2 和 5 的位置变换
现在 arr是这样的
int arr[] = { 5,2,1,4,3,6 }
2<1  false 所以 2 和 1 的位置不变
int arr[] ={ 5,2,1,4,3,6 }
由于刚才的位置未放生变化,那就拿1与其后面的数继续比较
1<4  true  所以 1 和 4 的位置变换
现在 arr是这样的
int arr[] = { 5,2,4,1,3,6 }
1<3  true  所以 1 和 3 的位置变换
现在 arr是这样的
int arr[] ={ 5,2,4,3,1,6 }
1<6  true  所以 1 和 6 的位置变换
现在 arr是这样的
int arr[] ={ 5,2,4,3,6,1 }
一共是比较了5次。
这样第1次比较就完了,最终将最小值1确定到了最后1位,不需要再做比较。


接着进行第二次比较:

与刚才类似:依然是拿第一个数“5”与其后的数做比较。由于数字1已确定为最小,所以不用比较。这样就只需要比较4次。

比完后是这样的:

int arr[] ={ 5,4,3,6,2,1 }


依次类推:第3次比较比3次,结果是这样的

int arr[] ={ 5,4,6,3,2,1 }


接着就是这样的:

第4次比2次  int arr[] ={ 5,6,4,3,2,1 }
第5次比1次  int arr[] ={ 6,5,4,3,2,1 }


数组 arr[] 的长度是6.

一共是比了5次,而每次比较中两两之比的次数又是递减的。

因此可以得出以下图示:

外循环内循环
第1次比较比了5次
第2次比较比了4次
第3次比较比了3次
第4次比较比了2次
第5次比较比了1次
3 . 代码

这冒泡排序是不是就这样出来了?

就拿刚刚的数组为例子:
首先:
一共需要比较多少次:
for(int i=0;i<arr.length-1;i++){}
一次比较里面两两相比需要多少次:
for(int j =0;j<arr.length-1-i;j++){}
如果arr[j]上的值小于arr[j+1]上的值就变换位置
if(arr[j]<arr[j+1]){
int temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}


最终冒泡排序的代码为:

for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]<arr[j+1]){
int temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}


补张图:



结束,收工。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: