Board logo

標題: 選擇排序 [打印本頁]

作者: 歐柏罕    時間: 2017-12-5 17:42     標題: 選擇排序

本帖最後由 歐柏罕 於 2017-12-5 17:46 編輯

選擇排序法(Selection Sort)是排序演算法的一種,也是一種簡單容易理解的演算法,其概念是反覆從未排序的數列中取出最小的元素,加入到另一個的數列,結果即為已排序的數列。運算流程如下:

1.從未排序的數列中找到最小的元素。
2.將此元素取出並加入到已排序數列最後。
3.重複以上動作直到未排序數列全部處理完成。
流程示意圖:

[attach]3123[/attach]

然而實作上通常不使用額外的數列來儲存已排序的部分,而使用原地(In-place)的方式來完成,數列的左半部表示已排序部分,右半部表示未排序部分,不另外使用數列。從未排序部分找到最小的元素,利用交換的方式將元素放置已排序部分的尾端。運算流程如下:

1.從未排序的數列中找到最小的元素。
2.將此元素與已排序部分的尾端元素進行交換。
3.重複以上動作直到未排序數列全部處理完成。
流程示意圖:[attach]3124[/attach]
作者: 巫沛庭    時間: 2017-12-5 18:31

#include<iostream>
#include<cstdlib>  
using namespace std;
int main()
{
     int num;
     int n[]={1,89,26,18,8,38};
     cout<<"排列前:";
     for(int i=1;i<6;i++)
          cout<<n[i]<<"  ";
     cout<<endl;
     
     for(int i=1;i<6;i++)
     {
       for(int j=i+1;j<6;j++)
       {
          if(n[j]<n[i])
          {
            num=n[j];
            n[j]=n[i];
            n[i]=num;           
          }   
       }      
     }
     
     cout<<"排列後:";
     for(int i=1;i<6;i++)
          cout<<n[i]<<"  ";
     cout<<endl;
   
    system("pause");
    return 0;
      
}
作者: 張閎鈞    時間: 2017-12-5 18:32

  1. #include<iostream>  
  2. #include<cstdlib>
  3. using namespace std;
  4. int main()
  5. {
  6. int a;
  7. int n[]={12,57,-6,-32,0,23};
  8. cout<<"牌前";
  9. for(int i=0;i<6;i++)
  10. cout<<n[i]<<" ";
  11. cout<<endl;


  12. for(int i=0;i<6;i++)
  13. {
  14. for(int j=i+1;j<6;j++)
  15. {
  16.     if(n[j]<n[i])   
  17.     {
  18.     a=n[j];
  19.     n[j]=n[i];
  20.     n[i]=a      ;      
  21.     }
  22. }        
  23. }




  24. cout<<"牌後";
  25. for(int i=0;i<6;i++)
  26. cout<<n[i]<<" ";
  27. cout<<endl;
  28.     system("pause");
  29.     return 0;   
  30. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2