程式要求:將資料{18,2,20,33,13}由大到小,並將排序的過程列印出來
演算法:在找到比目前大或小的數字時,先記錄其位置或索引值,待確定後再進行資料的交換,而這樣的方法我們稱之為選擇排序法
我是用氣泡完再去比對成選擇性排序..不知道有沒有其他的演算法可以直接用選擇性排序的..
示意圖:
運行結果:
Code:
----------------------從底下開始----------------------
#include <cstdlib>
#include <iostream>
int data[5]={18,2,20,33,13};
int sorted[5];
int i,j,k;
int count;
int tempInt;
int main(int argc, char *argv[])
{
printf("原始數質:");
for(i=0;i<5;i++)
{
sorted[i]=data[i];
printf(" %d",sorted[i]);
}
printf("\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(sorted[i]>sorted[j])
{
tempInt=sorted[i];
sorted[i]=sorted[j];
sorted[j]=tempInt;
}
}
}
for(i=0;i<5;i++) //33,20,18,13,2 18,2,20,33,13
{
for(j=1;j<5;j++)
{
if(sorted[i]==data[j])
{
tempInt=data[i];
data[i]=data[j];
data[j]=tempInt;
printf("第%d次Sorted:",++count);
for(k=0;k<5;k++)
{
printf(" %d",data[k]);
}
printf("\n");
}
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
--------------------------從以上結束----------------------