排序算法——冒泡排序法(Bubble Sort)

冒泡排序法

算法思想:

在排序过程中对相邻元素进行两两比较,越小的元素会慢慢浮到前面(数组低下标处),经过若干趟比较,元素排序完毕。

具体步骤:

程序有两层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;
    }     
   }
 }

猜你喜欢

转载自blog.csdn.net/Supreme7/article/details/106160520