标签:图解 int max 最小 选择 找到 right 排序 left
选择排序的思想其实比较简单,每循环一遍,就找到一个最小的或最大的,找到最小的,就和最左边的换,找到最大的就和嘴右边的换,如下图所示:
此图是找小的,每次遍历一遍就把找到最小的放在左边,直到结束。其实我们可以优化代码,同时找到最大的喝最小的,把最大的放在右边,最小的放在左边,如此循环下去。
void selectSort(int* a, int size)
{
//选择排序的思想就是每一次找到一个最大的,放到最后面,找到一个最小的放到最前面
int left = 0;//定义最左边的下标
int right = size - 1;//定义最右边的下标
while (left < right)
{
int min = left;
int max = left;//假设最大和最小的都是在最左边
for (int i = left; i <= right; i++)
{
if (a[i] < a[min])//如果小于下标为min的值,就把i的值赋给min;
{
min = i;
}
if (a[i] > a[max])//如果大于下标为max的值,就把i的值赋给max;
{
max = i;
}
}
Swap(&a[min], &a[left]);
if (max == left)
{
Swap(&a[right], &a[min]);
}
else
{
Swap(&a[max], &a[right]);
}
left++;
right--;
}
}
这if语句的的作用是什么,为什么要这么写,你知道吗?
标签:图解,int,max,最小,选择,找到,right,排序,left 来源: https://blog.csdn.net/m0_57330725/article/details/122347370
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。