冒泡排序法
算法思想:
在排序过程中对相邻元素进行两两比较,越小的元素会慢慢浮到前面(数组低下标处),经过若干趟比较,元素排序完毕。
具体步骤:
程序有两层for循环构成,外层循环控制趟数,内层循环控制该趟的比较次数,内部嵌套一个用于交换元素的if语句。
外层循环:
第一趟比较可以浮出最小的元素,第二趟浮出第二小的元素…每趟循环都可以浮出1个元素,以此类推length个元素共需要length-1趟比较。
内层循环:
第一趟需要进行length-1次比较,第二趟需要进行length-2次比较…每经过一趟,下趟的比较次数就要减1,第n趟需要比较length-n次。
以下给出冒泡排序两种比较方式(以升序排序为例)
从前往后比较:
public static void bubble_sort(int arr[])
{
for(int i=0;i<arr.length-1;i++) //控制趟数
for(int j=0;j<arr.length-i-1;j++)//递增循环从前往后比较
{
int temp;
if(arr[j]>arr[j+1])//两两比较,若后一个元素小,则交换
{
temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
从后往前比较:
public static void bubble_sort(int arr[])
{
for(int i=0;i<arr.length-1;i++)//控制趟数
for(int j=arr.length-1;j>i;j--)//递减循环从后往前比较
{
int temp;
if(arr[j-1]>arr[j])//两两比较,若后一个元素小,则交换
{
temp=arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
}
}
}