选择排序------------(C每日一编程)
2023-12-28 14:03:09
选择排序:
选择:每一趟从无序区选一个值最小(大)的元素,与无序区第一个元素交换
将n个数中最小数与第一个数交换,将n-1个数中最小数与第二个数交换,.......
结论:
n个数要进行n-1轮比较
第i轮要进行n-i次两两比较
for(i=0;i<n-1;i++)
{k = i;//擂主的下标也就是第二轮擂主的下标是i
for (j = i + 1; j <= n - 1; j++)//j从i+1开始,小于等于n-1(<n也行)
if(a[k]>a[j]) k=j;//a[k]和后面a[k+1]的元素比较,发现新擂主就换擂主下标
if (k != i)//两个相等的数就不用自己与自己比较了,这个条件是少比较一次,不写这句也没关系
{
//a[i]与a[k]交换//擂主和最开始a[i]数去交换
}
}
?
一,找到十个整数的最小数,将其与第一个互换。
分析:找出最小数用打擂台法
int a[10], i, min, k;
min = a[0]; k = 0;
for (i = 1; i < 10; i++)
if (min > a[i]) { min = a[i]; k = i; }
t = a[0]; a[0] = a[k]; a[k] = t;
下面是选择排序法
int main() {
int a[10], i, k,t,j,n;
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
k = 0;
for (i = 1; i < 10; i++)
if (a[k] > a[i]) { k = i; };
t = a[0]; a[0] = a[k]; a[k] = t;
for (i = 0; i < 10; i++)
printf("%d ", a[i]);
return 0;
}
以上仅供参考。
文章来源:https://blog.csdn.net/weixin_64545778/article/details/135242117
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!