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

在数组的查询遍历中,相邻的2个元素值根据排序条件
(升序或者降序)
进行位置的互换比如升序排序,从相邻的2个元素对比小的值会交换到靠下标0的方向
#property copyright "Copyright 2022, Author:阿龙."
#property link "https://www.guapit.com"
#property description "MT5智能交易编程课程"
#property description "QQ: 8199231"
#property version "1.00"
void OnStart()
{
// 冒泡排序算法
// 升序排列
int arr[9] = {3, 2, 9, 1, 7, 8, 4, 5, 6};
int size = ArraySize(arr);
// 主循环
for(int i = 0; i < size; i++)
{
// 节流锁
bool lock = false;
// 子循环
for(int j = 0; j < size - 1; j++)
{
if(arr[j] > arr[j + 1]) // 3 > 2
{
int temp = arr[j]; // 3
arr[j] = arr[j + 1]; // 2
arr[j + 1] = temp; // 3
lock = true;
}
// printf("主循环次数:%i,排序后的结果:[%i, %i, %i, %i, %i, %i, %i, %i, %i]",
// j,arr[0],arr[1],arr[2],arr[3],arr[4],arr[5],arr[6],arr[7],arr[8]);
}
if(lock == false) break;
printf("主循环次数:%i,排序后的结果:[%i, %i, %i, %i, %i, %i, %i, %i, %i]",
i,arr[0],arr[1],arr[2],arr[3],arr[4],arr[5],arr[6],arr[7],arr[8]);
}
// 降序排列
int arr2[9] = {2, 3, 9, 1, 7, 8, 4, 5, 6};
int size = ArraySize(arr2);
// 主循环
for(int i = 0; i < size; i++)
{
// 节流锁
bool lock = false;
// 子循环
for(int j = 0; j < size - 1; j++)
{
if(arr2[j] < arr2[j + 1]) // 2 < 3
{
int temp = arr2[j]; // 2
arr2[j] = arr2[j + 1]; // 3
arr2[j + 1] = temp; // 2
lock = true;
}
// printf("主循环次数:%i,排序后的结果:[%i, %i, %i, %i, %i, %i, %i, %i, %i]",
// j,arr2[0],arr2[1],arr2[2],arr2[3],arr2[4],arr2[5],arr2[6],arr2[7],arr2[8]);
}
if(lock == false) break;
printf("主循环次数:%i,排序后的结果:[%i, %i, %i, %i, %i, %i, %i, %i, %i]",
i,arr2[0],arr2[1],arr2[2],arr2[3],arr2[4],arr2[5],arr2[6],arr2[7],arr2[8]);
}
}
学习冒泡算法传送门: