SELECTION SORT-我自己的排序版本

问题描述 投票:0回答:1
  • 我正在尝试为自己的选择排序算法。但是由于某种原因,该算法在倒数第二个元素处停止。有人可以帮助我理解为什么我的排序不包括最后两个元素。

     void selection_sort(int a[],int size)
    {
       int start = -1;
       int fin_index;
       int smallest;
       while(start<=size)
        {
       start++;
        fin_index = start;
       int smallest_elem = a[start];
       for(int i=start;i<size;i++)
       {
         if(a[i]<smallest_elem)
         {
        smallest_elem = a[i];
        smallest = i;
       }
        }
        swap(a[fin_index],a[smallest]);
         }
    

    }

sorting for-loop while-loop selection void
1个回答
0
投票

进入“ for”循环之前,您尚未初始化“最小”变量。

将其初始化为fin_index。 (最小= fin_index)

如果元素已经在其排序位置,则它将与先前的最小值交换。

另外,您的while循环运行大小+2倍。 while循环最多只能运行“大小”时间,因为我们想要最少的“大小”时间。

这两个错误会导致您的实现失败。

© www.soinside.com 2019 - 2024. All rights reserved.