冒泡排序
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,所以起名为“冒泡排序”。
数值之间的交换
首先再聊冒泡排序之前,我们先聊一聊数值之间的交换。在我们日常生活中想要进行交换的话仅仅在两个个体之间就可以进行,但是在计算机中就不一样了,举个例子:
int a=1;
int b=2;
//如果我想把让a和b的数值进行交换
a=b;
b=a;// 结果: a=2 , b=2;
结果显然是错误的。原因在于上述操作是分别把1和2赋值给a和b,然后把b的2再复制给a 此时a的值就变成2了,最终的结果就会变成a和b都变成了2。
正确的做法为:
int a=1;
int b=2;
//还需要一个中间量,做一个转换的容器
int c;
c=a;
a=b;
b=c; //结果为: a=2 ,b=1
这就是变量进行交换的方法,方法中就是用到了一个中间可以进行存储数据的容器做一个中转站。
此外在了一个另外两种变量交换的方法。
1)变量加减的方法:
int a=1;
int b=2;
a=a+b;
b=a-b;
a=a-b; //结果为 a=2 ,b=1;
2)变量乘除的方法:
int a=1;
int b=2;
a=a*b;
b=a/b;
a=a/b;
此外还有很多方法都可以进行变量之间的数据转换,但都不太常用不推荐使用。
冒泡排序的原理
回归主体我们来聊冒泡排序的原理,为了方便解释说明,我们就聊冒泡排序升序的这种情况。
1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2)对每一对相邻元素做同样的事,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3)针对所有的元素重复以上的步骤,除了最后一个,简单的说就是先用第一个数进行排序比较
也就是说进行第一轮比较,比较完后进行第二轮从第二个数来时进行比较此时比较次数减1,往后一次类推。
4)针对所有的元素重复以上的步骤,除了最后一个。
下面我们一代码的方式进行演示,随机用5个整数类型的数值16,9,25,90,41。
public static void main(String[] args) {
int[] nums={16,9,25,90,41};
int alt=0;
for(int i=0;i<nums.length-1;i++){
for(int j=0;j<nums.length-1-i;j++){
if(nums[j]>nums[j+1]){
alt=nums[j+1];
nums[j+1]=nums[j];
nums[j]=alt;
}
}
System.out.println(Arrays.toString(nums));
}
出来的结果为:[9, 16, 25, 41, 90]
这样我就聊完了冒泡循环,欢迎广大网友评论指出我的不足
感谢阅读^ ^