冒泡排序
先说一下概念:
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
简单的说就是通过循环对相邻的两个数进行排序,比较后满足条件则交换顺序,以此类推。
下面看个例子:
5,2,7,1
素组第一位(5)和第二(2)发现5>2,所以交换位置
2,5,7,1
素组第二位(5)和第三(7)发现5<7,所以不交换位置
2,5,7,1
素组第三位(7)和第四(1)发现7>1,所以交换位置
2,5,1,7
注意:到此为止素组第一趟排序完成找出了最大的数字(7)并且成功的放到了最后一位,发生了三次比较(n-1次)
接下来我们只需要对2,5,1这三个数字进行排序即可
排序顺序为,并且发生了2次排序(n-1次)
2,5,1
2,1,5
注意:通过这次排序我们找到了第二大数字(5)
最后对数组2,1排序
一次即可比较完成
结果为
1,2,5,7
好了,到此我们模拟了冒泡排序,现在知道思路后java实现代码如下
public class Bubble_Sort {
static int arr[] = {4,5,3,4,6,0,5,3,4,6,1,-1};
public static void bs()
{
for(int i=arr.length-1;i>0;--i) //此处决定循环趟数
{
for(int a=0;a<i;a++)<span style="white-space:pre"> </span>//此处循环比较相邻两个元素的大小
{
if(arr[a]>arr[a+1])
{
int tmp = arr[a];
arr[a] = arr[a+1];
arr[a+1] = tmp;
}
}
}
System.out.println(Arrays.toString(arr));
}
public static void main(String[] args) {
Bubble_Sort.bs();
}
}
排序后的结果是
[-1, 0, 1, 3, 3, 4, 4, 4, 5, 5, 6, 6]
到此为止,冒泡介绍完毕,下一篇我讲介绍一下快速排序。