排序算法——选择排序

选择排序:比如在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换......第N-1趟遍历剩下的2个数据,找出其中最小的数值与第N-1个元素交换,至此选择排序完成。

 1 void SelectSort(int unsort[],const int count)

 2 {

 3     int i, j, index;

 4     int temp;

 5     for (i = 0; i < count;i++)

 6     {

 7         index = i;

 8         for (j = i + 1; j < count;j++)

 9         {

10             if (unsort[j]<unsort[index])

11             {

12                 index = j;

13             }

14         }

15         if (index!=i)

16         {

17             temp = unsort[index];

18             unsort[index] = unsort[i];

19             unsort[i] = temp;

20         }

21     }

22 }

此处附上以前写的另外一个实现方式(理论上差不多)

 1 //select-sort

 2 template<typename T>

 3 void Select_Sort(T arry[],int len)

 4 {

 5     if(arry==NULL)

 6         return;

 7     for (int i=0;i<len;i++)

 8     {

 9         int index=i;

10         T temp;

11         T Min=arry[i];

12         for (int j=i;j<len;j++)

13         {

14             if(arry[j]<Min)

15             {

16                 index=j;

17                 Min=arry[j];

18             }

19         }

20         if (Min!=arry[i])

21         {

22             temp=arry[i];

23             arry[i]=arry[j];

24             arry[j]=temp;

25         }

26     }

27 

28 }

 

测试

 1 int main()

 2 {

 3     int unsort[] = {2,5,7,4,6,9};

 4     SelectSort(unsort, 6);

 5     for (int i = 0; i < 6;i++)

 6     {

 7         printf("%d\r",unsort[i]);

 8     }

 9     return 0;

10 }

 

你可能感兴趣的:(选择排序)