选择排序

在这里,贴出选择排序源码,以期大神能指出问题所在,在两个排序中,得到的不是预期结果。

 1 #include "stdio.h"
 2 /*********************************
 3 选择排序降序
 4 ***********************************/
 5 void selectsort(int k[],int n)
 6 {
 7     int i,j,max;
 8     for(i=1;i<=n-1;i++)
 9     {
10         max=i;
11         for(j=i+1;j<=n;j++)
12         {//在后n-i+1个元素中找到最大的元素位置
13             if(k[j]>k[max])
14             {
15                 //用max记录最大元素的位置
16                 max=j;
17             }
18             //如果最大的元素不位于后n-i+1个元素档第1个
19             if(max!=i)
20             {//元素的交换
21                 k[0]=k[max];
22                 k[max]=k[i];
23                 k[i]=k[0];
24             }
25         }
26     }
27     printf("\nThe result of selection descending order for the array is\n");
28     //输出排序后的结果
29     for(i=1;i<=n;i++)
30     {
31         printf("%d ",k[i]);
32     }
33     printf("\n");
34 }
35 
36 /*********************************
37 选择排序升序
38 ***********************************/
39 void select_sort(int k[],int n)
40 {
41     int i,j,min;
42     for(i=1;i<=n-1;i++)
43     {
44         min=i;
45         for(j=i+1;j<=n;j++)
46         {//在后n-i+1个元素中找到最小的元素位置
47             if(k[j]<k[min])
48             {
49                 //用max记录最小元素的位置
50                 min=j;
51             }
52             //如果最小的元素不位于后n-i+1个元素档第1个
53             if(min!=i)
54             {//元素的交换
55                 k[0]=k[min];
56                 k[min]=k[i];
57                 k[i]=k[0];
58             }
59         }
60     }
61     printf("\nThe result of selection ascending order for the array is\n");
62     //输出排序后的结果
63     for(i=1;i<=n;i++)
64     {
65         printf("%d ",k[i]);
66     }
67     printf("\n");
68 }
69 
70 /**********************************
71 程序入口
72 ***********************************/
73 main()
74 {
75     //初始化序列,a[0]可任意置数
76     int i,a[11]={-111,2,5,6,3,7,8,9,0,12,1};
77     printf("The orginal data array is\n");
78     //显示原序列中的元素
79     for(i=1;i<=10;i++)
80     {
81         printf("%d ",a[i]);
82     }
83     //执行选择排序
84     selectsort(a,10);
85     select_sort(a,10);
86 }

 

posted @ 2013-04-27 22:59  Chars-D  阅读(216)  评论(0编辑  收藏  举报