#include <stdio.h>
void choice(int *a,int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
int main(int argc, char *argv[])
{
int a[10]={2,4,7,1,6,9,8,3,0,5};
int i;
choice(a,10);
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
统一回复一下博友的问题:
首先说句抱歉的是,我这个只是上了裸代码。
这个程序就是选择排序算法。
引用选择排序算法百度百科
简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。
以下为简单选择排序的存储状态,其中大括号内为无序区,大括号外为有序序列:
初始序列:{2 4 7 1 6 9 8 3 0 5}
第1趟:2与0交换:0{4 7 1 6 9 8 3 2 5}
第2趟:0不动,4与1交换:0 1{7 4 6 9 8 3 2 5}
第3趟:7与2交换:0 1 2{4 6 9 8 3 7 5}
第4趟:4与3交换:0 1 2 3{6 9 8 4 7 5}
第5趟:6与4交换:0 1 2 3 4{9 8 6 7 5}
第6趟:9与5交换:0 1 2 3 4 5{8 6 7 9}
第7趟:8与6交换:0 1 2 3 4 5 6{8 7 9}
第8趟:8与7交换:0 1 2 3 4 5 6 7{8 9}
第9趟:排序完成
冒泡排序可以查看点击,非常抱歉的是这个里面是冒泡排序的裸代码,查看代码其实可以体会到冒泡排序本质是:排序的数像水泡一样,依次比较,大的数往后移,最后大的数排在最后。
今天的文章选择排序算法c语言实现什么_c语言几大基本算法「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/78929.html