c语言选择排序法

c语言选择排序法,第1张

#include<stdioh>

int main()

{ int a[6],max,min,i,j,ma,mi,t,mid;

for(i=0; i<6; i++)

{ scanf("%d",&a[i]);

}

for(i=0; i<3; i++)

{ min=a[i];

  max=a[i];

  for(j=i,mi=i,ma=i; j<6-i; j++)

  { if(a[j]<min)

    { min=a[j];

      mi=j;

    }

    if(a[j]>max)

    { max=a[j];

      ma=j;

    }

  }

  t=a[i];

  a[i]=a[mi];

  a[mi]=t;

  if(ma==i)ma=mi; //增加了这一行

  mid=a[5-i];

  a[5-i]=a[ma];

  a[ma]=mid;

}

for(i=0; i<6; i++)

{ printf("%d",a[i]);

  printf(" ");

}

return 0;

}

选择排序改进了冒泡排序,每次遍历列表只做一次交换,为了做到这一点,一个选择排序在遍历时寻找最大的值,并在完成遍历后,将其放到正确的地方。

第二次遍历,找出下一个最大的值。遍历n-1次排序n个项,最终项必须在n-1次遍历之后。

接下来呢,我们直接进行把最小值放到已排序序列末尾的 *** 作。当然这是第一轮循环,还没有产生已排序的序列。0就是已排序序列的开头数字了。

第二轮初始化开始,我们继续选取假设的最小值,这次,我们还是选取第一个数字作为假设的最小值,需要注意的是,0已经是已排序序列,我们要从未排序的序列中选取第一个数字,也就是(5、1、8、6、2、3、4、9、7)无序序列中的数字5。

void sa(int array[],int n)

{

int i,j,k,temp;

for(i=0;i<10;i++)

{

k=i; //保存i的值,用k来进行循环排序

for(j=i+1;j<n;j++) //将第i个元素后面的元素与第i个元素进行比较

if(array[j]<array[k]) //如果第k=i个元素后面的元素小于i号元素,交换两个元素的标号, 这样就将最小元素的标号放到最前面

k=j; //交换标号

temp=array[k]; //循环结束后,交换两个标号下的元素的值

array[k]=array[i];

array[i]=temp;

}

}

这个程序实现的是由小到大的排序。第二个循环里面,就是i号元素后面最小的元素对应的标号放到k中,在交换当前元素与k号元素中的值,实现由大到小排序

以上就是关于c语言选择排序法全部的内容,包括:c语言选择排序法、选择排序c语言代码、c语言 选择法排序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10060393.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存