欢迎光临
我们一直在努力

MT5(C++)软件编程-选择排序算法

  1. MT5(C++)软件编程十大排序算法 - 冒泡排序算法 (bubble Sort)
  2. MT5(C++)软件编程十大排序算法 - 选择排序算法 (select Sort)
  3. MT5(C++)软件编程十大排序算法 - 插入排序算法 (insert Sort)
  4. MT5(C++)软件编程十大排序算法 - 快速排序算法 (quick Sort)
  5. MT5(C++)软件编程十大排序算法 - 希尔排序算法 (shell Sort)
  6. MT5(C++)软件编程十大排序算法 - 堆排序算法 (heap Sort)
  7. MT5(C++)软件编程十大排序算法 - 归并排序算法 (merge Sort)
  8. MT5(C++)软件编程十大排序算法 - 计数排序算法 (counting Sort)
  9. MT5(C++)软件编程十大排序算法 - 桶排序算法 (bucket Sort)
  10. MT5(C++)软件编程十大排序算法 - 基数排序算法 (radix Sort)

  1. 选择排序算法
    当前元素和剩下的无序列表中的极限值进行位置交换
    arr: 需要排序的数组
    seq: 排序的方向, true 为升序, false为降序
template <typename T>
void selectSort(T & arr[],const bool seq=true)
{
  if(typename(arr) == "int" || typename(arr) == "double")
  {
    int size = ArraySize(arr);
    if(seq)
    for(int i=0; i<size - 1; i++)
    {
      int insertIndex = i + 1;
      int j = i + 1;
      while (j < size - 1)
      {
        if(arr[insertIndex] > arr[j + 1])
        {
          insertIndex = j + 1;
        }
        j++;
      }
      if(arr[i] > arr[insertIndex]) swap(arr[i], arr[insertIndex]
    }
    else
    for(int i=0; i<size - 1; i++)
    {
      int insertIndex = i + 1;
      int j = i + 1;
      while (j < size - 1)
      {
        if(arr[insertIndex] < arr[j + 1])
        {
          insertIndex = j + 1;
        }
        j++;
      }
      if(arr[i] < arr[insertIndex]) swap(arr[i], arr[insertIndex]
    }
  }
  
}

2. 双向选择排序算法
当前元素和剩下的无序列表中的极限值进行位置交换
arr: 需要排序的数组
seq: 排序的方向, true 为升序, false为降序

template <typename T>
void selectSortOP(T & arr[],const bool seq=true)
{
  if(typename(arr) == "int" || typename(arr) == "double")
  {
    int size = ArraySize(arr);
    int max,min;
    if(seq)
    {
      int low = 0; int high = size - 1;
      while(low <= high)
      {
        max = low; min = low;
        for(int i = low + 1; i <= high; i++)
        {
          if(arr[i] < arr[min]) min = i;
          if(arr[i] > arr[max]) max = i;
        }
        swap(arr[low], arr[min]);
        if(max == low)max = min;
        swap(arr[high],arr[max]);
        high--;
        low++;
      }
    } 
    else
    {
      int low = 0; int high = size - 1;
      while(low <= high)
      {
        max = low; min = low;
        for(int i = low + 1; i <= high; i++)
        {
          if(arr[i] > arr[min]) min = i;
          if(arr[i] < arr[max]) max = i;
        }
        swap(arr[low], arr[min]);
        if(max == low)max = min;
        swap(arr[high],arr[max]);
        high--;
        low++;
      }
    }
  }
}

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:瓜皮猫量化编程 » MT5(C++)软件编程-选择排序算法
分享到: 生成海报

评论 抢沙发

瓜皮猫量化交易编程

QQ群: 492653640微信: guapitcom
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活