- 原理:从第一个数开始选择n次,每次选出最小值。n为数据长度。
- 1 //排序主函數
- 2 #include <stdio.h>
- 3 int main()
- 4 {
- 5 int ss[14]={5,10,13,3,1,11,4,12,7,2,0,8,9,6};
- 6 int i,k;
- 7 int length=14;
- 8 int step=5;
- 9 printf("初始值:");
- 10 for(i=0;i<length;i++)
- 11 printf("%d ",ss[i]);
- 12 printf("\n");
- 13 SelectSort(ss,length);
- 14 printf("最後結果:");
- 15 for(i=0;i<length;i++)
- 16 printf("%d ",ss[i]);
- 17 printf("\n");
- 18 }
- 1 #include <stdio.h>
- 2 void SelectSort(int Str[],int length )
- 3 {
- 4 int i,temp,j;
- 5 for(i=0;i<length;i++)
- 6 {
- 7 j = SelectMin(Str,length,i);
- 8 if(i!=j)
- 9 {
- 10 temp=Str[i];
- 11 Str[i]=Str[j];
- 12 Str[j]=temp;
- 13 }
- 14 printf("第%d次選擇",i);
- 15 for(j=0;j<length;j++)
- 16 printf("%d ",Str[j]);
- 17 printf("\n");
- 18 }
- 19 }
- //找最小值函数
- 1 int SelectMin(int Str[] , int length,int i )
- 2 {
- 3 int Min=i;
- 4 i=i+1;
- 5 while(i<length)
- 6 {
- 7 if(Str[Min]>Str[i])
- 8 Min=i;
- 9 i++;
- 10 }
- 11 return Min;
- 12 }
- 运行结果:
- 初始值:5 10 13 3 1 11 4 12 7 2 0 8 9 6
- 第0 次選擇0 10 13 3 1 11 4 12 7 2 5 8 9 6
- 第1 次選擇0 1 13 3 10 11 4 12 7 2 5 8 9 6
- 第2 次選擇0 1 2 3 10 11 4 12 7 13 5 8 9 6
- 第3 次選擇0 1 2 3 10 11 4 12 7 13 5 8 9 6
- 第4 次選擇0 1 2 3 4 11 10 12 7 13 5 8 9 6
- 第5 次選擇0 1 2 3 4 5 10 12 7 13 11 8 9 6
- 第6 次選擇0 1 2 3 4 5 6 12 7 13 11 8 9 10
- 第7 次選擇0 1 2 3 4 5 6 7 12 13 11 8 9 10
- 第8 次選擇0 1 2 3 4 5 6 7 8 13 11 12 9 10
- 第9 次選擇0 1 2 3 4 5 6 7 8 9 11 12 13 10
- 第10次選擇0 1 2 3 4 5 6 7 8 9 10 12 13 11
- 第11次選擇0 1 2 3 4 5 6 7 8 9 10 11 13 12
- 第12次選擇0 1 2 3 4 5 6 7 8 9 10 11 12 13
- 第13次選擇0 1 2 3 4 5 6 7 8 9 10 11 12 13
- 最後結果:0 1 2 3 4 5 6 7 8 9 10 11 12 13