冒泡排序 (Bubble Sorting) 的基本思想是:
通过对待排序序列从后向前 ( 从下标较大的元素开始 ) ,
依次比较相邻元素的排序码,
若发现逆序则交换,
使排序码较小的元素逐渐从后部移向前部 ( 从下标较大的单元移向下标较小的单元 ) ,
就象水底下的气泡一样逐渐向上冒。
因为排序的过程中,各元素不断接近自己的位置,
如果一趟比较下来没有进行过交换,就说明序列有序,
因此要在排序过程中设置一个标志 flag 判断元素是否进行过交换。
从而减少不必要的比较。
举例说明:
class Bubble{
/**
*
* @param arr
* @brief 冒泡法排序,这里是升序排列法
* 从上往下,从小到大
*/
public void sort(int arr[])
{
int temp = 0;
/* 外层循环,长度为数组长丢-1,因为不需要和自己比较 */
for(int i = 0; i < arr.length - 1; i++)
{
/* 每次排序结束后,最大的数已经排到最上面
* 所以这里就要去掉上次已经排好的最大数
* 所以每次排完,剩下的就是上次的个数-1
*/
for(int j = 0; j < arr.length - i - 1; j++)
{
if(arr[j] > arr[j+1]) //当换成 < 就变成降序排序了
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
}
调用Bubble,的sort算法:
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] = {9, -5, 20, 3, 16};
Bubble bubble = new Bubble();
bubble.sort(arr);
for(int i = 0; i < arr.length; i++)
{
System.out.println("arr[" + i + "] = " + arr[i]);
}
}
最后输出的结果是: