在数组的查询遍历中,当前元素和数组中剩下的元素根据排序条件(升序或者降序)
的极限值进行位置的互换
升序排序: 当前元素和数组中剩下元素中最小的元素进行比较,并交换双方的位置
降序排序: 当前元素和数组中剩下元素中最大的元素进行比较,并交换双方的位置
// 升序排序
int arr[] = {3,2,9,1,7,8,5,6,4};
int size = ArraySize(arr);
for(int i = 0; i < size; i++)
{
// 在从下一个下标开始到结束找到最小序号
int min_index = i + 1;
for(int j = i + 1; j< size - 1; j++)
{
if(arr[min_index] > arr[j + 1])
{
// 找到最小值的下标序号
min_index = j + 1;
}
}
//当前值 和 剩下的元素中找到了最小的值 进行比较
if(arr[i] > arr[min_index])
{
int temp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = temp;
}
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 arr[] = {3,2,9,1,7,8,5,6,4};
int size = ArraySize(arr);
for(int i = 0; i < size; i++)
{
// 在从下一个下标开始到结束找到最小序号
int min_index = i + 1;
for(int j = i + 1; j< size - 1; j++)
{
if(arr[j] < arr[j + 1])
{
// 找到最小值的下标序号
min_index = j + 1;
}
}
//当前值 和 剩下的元素中找到了最小的值 进行比较
if(arr[i] < arr[min_index])
{
int temp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = temp;
}
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]);
}