我的选择排序

 1 #define MaxLen 256
 2 #include <stdio.h>
 3 void main()
 4 {   
 5       int s[MaxLen]={0};
 6       int i=0;
 7       int count=0;
 8       int *pmin=0;   
 9       printf("你要对多少个数字进行选择排序?\n请输入:");
10       scanf("%d",&i);
11       if(i>MaxLen)
12       {
13             printf("数字过大,重新输入:");
14             scanf("%d",&i);
15       }
16       printf("你要对%d个数字进行选择排序,这个数字序列是:\n",i);
17       for (int k=0; k<i; k++)
18       {
19             scanf("%d",&s[k]);
20       }
21 
22       for (;count<i;count++)
23       {
24             pmin=&s[count];
25             for (int t=count; t<i; t++)        //和自己对比一次;数组谨防越界。
26             {
27                   if (*pmin>s[t])   
28                         pmin=&s[t];
29             }
30             if(*pmin<s[count])                //不加这个判断语句,倘若count循环进行到倒数第二次时恰好排好,会出现逻辑问题
31             {
32                   *pmin^= s[count];
33                   s[count]^= *pmin;
34                   *pmin^= s[count];
35             }
36       }
37       printf("\n");
38       for (int j=0; j<i; j++)
39       {
40             printf("%3d",s[j]);
41       }
42       printf("\n");
43 }
44  

 

posted @ 2011-03-29 02:37  xupengzhuo  阅读(260)  评论(2编辑  收藏  举报