冒泡排序與選擇法排序

在排序算法中,最簡單的莫過於冒泡排序算法和選擇法排序了

首先寫一個元素交換函數


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);
            }
                  
        }
              
    }


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