冒泡排序与选择法排序

在排序算法中,最简单的莫过于冒泡排序算法和选择法排序了

首先写一个元素交换函数


public static void swap(int arr[],int i,int j)
    {
            int temp=arr[i];
            arr[i]=arr[j];
            arr[j]=temp;
                                                                                                                      
    }



public  static void BubbleSort0(int arr[])
    {
        int i,j;
        for(i=0;i<arr.length-1;i++)
        {
            for(j=i+1;j<arr.length;j++)
            {
                if(arr[i]>arr[j])
                {
                    swap(arr,i,j);
                }
            }
        }
    }

这个冒泡排序算法最简单,但是不是真正意义的冒泡排序算法

主要实现的思路是将数组中从第一个元素起与它后面的每个元素进行比较

注意判断条件i<arr.length-1,只到数组倒数第二个,j=i+1,j<arr.length,j从i下一个开始直到数组最后一个元素

2  真正的冒泡排序算法

public static void BubbleSort1(int arr[])

{

int i,j;

for(i=0;i<arr.length-1;i++)

{

for(j=arr.length-2;j>=i;j--)//从倒数第二个与下面一个比较,逐渐浮上去

{

if(arr[j]>arr[j+1])

{

swap(arr,j,j+1);

}

}

}

}

3

//改进冒泡程序,增加一个标记变量,防止有序的情况下的无意义判断
    public static void BubbleSort2(int arr[])
    {
        int i,j;
        boolean flag=true;
        for(i=0;i<arr.length-1&&flag;i++)
        {
            flag=false;
            for(j=arr.length-2;j>=i;j--)//从倒数第二个与下面一个比较,逐渐浮上去
            {
                if(arr[j]>arr[j+1])
                {
                    swap(arr,j,j+1);
                    flag=true;
                }  
            }
        }
    }

4选择法排序

public static void SelectSort(int arr[])
    {
        int i,j,min;
        for(i=0;i<arr.length-1;i++)//
        {
            min=i;
            for(j=i+1;j<=arr.length-1;j++)
            {
                if(arr[min]>arr[j])
                    min=j;
            }
            if(i!=min)
            {
                swap(arr,i,min);
            }
                  
        }
              
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章