2 sbshso sbshso 于 2016.02.27 10:56 提问

C语言选择排序法的的困惑

运行没有达到想要的结果,哪里出错了图片说明

7个回答

devmiao
devmiao   Ds   Rxr 2016.02.27 13:42
已采纳

k!=i,交换,这个要写在循环的外面。

sbshso
sbshso 是的,我调试出来了,谢谢
接近 2 年之前 回复
qq_33998925
qq_33998925   2016.02.27 11:04

请问你的困惑是什么?

sbshso
sbshso 输出的数据并没有完全排序
接近 2 年之前 回复
qq_33998925
qq_33998925   2016.02.27 11:33

这样改改就可以了。
图片说明

sbshso
sbshso 这种属于冒泡排序法吧,我想知道选择排序法的过程
接近 2 年之前 回复
xianfajushi
xianfajushi   2016.02.27 12:57

自己设断点查看数据变化这样学练效果最佳

Binbin_IT
Binbin_IT   2016.02.27 13:40

把 if(k!=i) 这个判断块放到第一层的for里,而不是第二层的for里。
选择排序是每次找出一个最大或者最小值,第二个for只是找出那个值就可以了,交换要放到第一层for里进行。

sinat_28782331
sinat_28782331   2016.02.27 14:16
 void select_sort(int*a,int n)
{
    register int i,j,min,t;
    for(i=0;i<n-1;i++)
    {
        min=i;//查找最小值
        for(j=i+1;j<n;j++)
            if(a[min]>a[j])
                min=j;//交换
        if(min!=i)
        {
            t=a[min];
            a[min]=a[i];
            a[i]=t;
        }
    }
}
baidu_33836580
baidu_33836580   2016.02.28 11:51

for(i = 0; i < n - 1; i++)
for(j = i + 1; j < n; j++)
if(a[i] > a[j]) { t = a[j]; a[j] = a[i]; a[i] = t; }

Csdn user default icon
上传中...
上传图片
插入图片