標題:
選擇排序
[打印本頁]
作者:
歐柏罕
時間:
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
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
int a;
int n[]={12,57,-6,-32,0,23};
cout<<"牌前";
for(int i=0;i<6;i++)
cout<<n[i]<<" ";
cout<<endl;
for(int i=0;i<6;i++)
{
for(int j=i+1;j<6;j++)
{
if(n[j]<n[i])
{
a=n[j];
n[j]=n[i];
n[i]=a ;
}
}
}
cout<<"牌後";
for(int i=0;i<6;i++)
cout<<n[i]<<" ";
cout<<endl;
system("pause");
return 0;
}
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/)
Powered by Discuz! 7.2