冒泡排序、選擇排序和插入排序

來源:互聯網
上載者:User

一、冒泡排序

依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。重複以上過程,直至最終完成排序。

 

冒泡排序是穩定的。演算法時間複雜度是O(n ^2)。

 

程式實現樣本

將數組從小到大排列

public void BubbleSort(int[] array)

{

  int length = array.Length;

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

  {

  for (int j = length - 1; j > i; j--)

  {

  if (array[j] < array[j - 1] )

  {

  int temp = array[j];

  array[j] = array[j - 1];

  array[j - 1] = temp;

     }

     }

     }

}

 

 

二、    選擇排序

每一趟從待排序的資料元素中選出最小(或最大)的一個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。 選擇排序是不穩定的排序方法。

 

選擇排序是不穩定的。演算法複雜度是O(n ^2 )。

 

程式實現樣本

將數組從小到大排列

 

public void ChoiceSort (int [] array)

 {

     int min;

     for(int i=0;i< array.Length-1;i++)

     {

         min=i;

         for(int j=i+1;j< array.Length;j++)

        {

            if(list[j]<list[min])

                min=j;

        }

        int t=list[min];

        list[min]=list[i];

        list[i]=t;

    }

}

 

三、    插入排序

 

每次從無序表中取出第一個元素,把它插入到有序表的合適位置,使有序表仍然有序。

 

直接插入排序是穩定的。演算法時間複雜度是O(n ^2)

 

程式實現樣本

將數組從小到大排列
 public void InsertSort (int [] array)
 {
     for(int i=1;i< array.Length;i++)
     {
         int temp = array [i];//從無序表中取出的數,放在temp裡面

     // j>0&&temp< array [j-1]為每一輪排序停止的條件

          for(int j=i;j>0&&temp< array [j-1];j--)

          {

                 array[j]= array[j-1];                

          }

         array[j]=temp;
   }
}

 

ps:

 1) 穩定的:如果存在多個具有相同排序碼的記錄,經過排序後,這些記錄的相對次序仍然保持不變,則這種排序演算法稱為穩定的。
    插入排序、冒泡排序、歸併排序、分配排序(桶式、基數)都是穩定的排序演算法。
 2)不穩定的:否則稱為不穩定的。
    直接選擇排序、堆排序、shell排序、快速排序都是不穩定的排序演算法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.