在数组的查询遍历中,相邻的2个元素值根据排序条件(升序或者降序)
进行位置的互换
比如升序排序,从相邻的2个元素对比小的值会交换到靠下标0的方向
防抖锁: 设置间隔锁,间隔时间内程序只触发一次
节流锁: 设置状态锁,为true
时程序正常运行,为false
时程序结束运行.
int arr[] = {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])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
lock = true;
}
}
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 arr3[] = {3,2,9,1,7,8,5,6,4};
int size = ArraySize(arr3);
for(int i = 0; i < size; i++)
{
// 节流锁
bool lock = false;
for(int j = 0; j < size - 1; j++)
{
if(arr3[j] < arr3[j + 1])
{
int temp = arr3[j];
arr3[j] = arr3[j + 1];
arr3[j + 1] = temp;
lock = true;
}
}
if(lock == false) break;
}