显示生活中经常会遇到将一组数进行排序,并且按从小到大或者从大到小。如果给出一组是个元素的数,让大家排序,肯定花费一点时间就能够完成。但是,如果一组数有100个、1000个,还能快速的排出来吗?
因此,这里介绍一种快速排序算法冒泡排序算法,它与选择排序算法比较相似,只是排序的方式不一样。下面我们介绍冒泡排序算法的原理及步骤。
一、冒泡排序算法原理
冒泡排序算法是一种前后的两两比较的一种方式进行逐个排序的过程。首先,我们将第一个元素与第二个元素进行比较,若第二个大于一个元素,两个彼此之间进行替换。然后将替换后的第二个元素与第三个元素进行比较,如果第三个小于替换后的第二个元素,则将两者进行替换,依此上述的原则进行第i个元素与i+1个元素进行比较,至此第一轮比较完成。
这时我们的最大一个元素将被放在最后,所以在下一次比较的过程中只比较前n-1个元素。下面将介绍该算法的步骤:
步骤1:初始化数组array(数组长度为n);
步骤2:将数组的第i个元素与第i+1个元素进行比较,若前者大于后者,交换两者,直到将所有的元素都进行完毕,此时将最大的元素放在最后;
步骤3:重复步骤2,将前n-1个元素进行比较替换;
步骤4:排序完成,输出排序后的数组;
二、案例讲解
为了更好更直观的让他家了解冒泡排序算法,我们给出一数组[4,1,8,45,6,12,67,23].
第1次排序:1,4,8,6,12,45,23,67
第2次的排序结果:1, 4, 6, 8, 12, 23, 45, 67
第3次的排序结果:1, 4, 6, 8, 12, 23, 45, 67
第4次的排序结果:1, 4, 6, 8, 12, 23, 45, 67
第5次的排序结果:1, 4, 6, 8, 12, 23, 45, 67
第6次的排序结果:1, 4, 6, 8, 12, 23, 45, 67
第7次的排序结果:1, 4, 6, 8, 12, 23, 45, 67
从上就可以看出,在第二次排序的时候就完成了数组的排序。
三、程序实现
(一)JAVA实现
import java.util.Arrays;
//编写冒泡排序算法
public class maopaoArr {
//创建对象
int [] arr;
//创建方法
public void setArr(int [] arr) {
this.arr=arr;
}
public int[] getArr() {
return arr;
}
public void Array() {
for(int i=0;i<arr.length-1;i++) {
for(int j=0;j<arr.length-i-1;j++) {
if(arr[j]>arr[j+1]) {
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
//打印每一次迭代的结果
System.out.println("第"+(i+1)+"次的排序结果:"+Arrays.toString(arr));
}
}
}
//测试类
public class TestArray {
public static void main(String[] args) {
//创建对象
maopaoArr test=new maopaoArr();
test.arr= new int [] {4,1,8,45,6,12,67,23};
test.Array();
}
}
(二)python实现
#冒泡排序算法---两者之间比较---依此将最大的往后排
def maopao_sort(num):
for i in range(len(num)-1):
for j in range(len(num)-i-1):
if num[j]>num[j+1]:
s=num[j]
num[j]=num[j+1]
num[j+1]=s
print('第%s次排序后的结果:%s'%(i+1,num))
#创建数组
array=[4,1,8,45,6,12,67,23]
#调用算法
maopao_sort(array)
四、运行输出结果
第1次的排序结果:[1, 4, 8, 6, 12, 45, 23, 67]
第2次的排序结果:[1, 4, 6, 8, 12, 23, 45, 67]
第3次的排序结果:[1, 4, 6, 8, 12, 23, 45, 67]
第4次的排序结果:[1, 4, 6, 8, 12, 23, 45, 67]
第5次的排序结果:[1, 4, 6, 8, 12, 23, 45, 67]
第6次的排序结果:[1, 4, 6, 8, 12, 23, 45, 67]
第7次的排序结果:[1, 4, 6, 8, 12, 23, 45, 67]