C语言实现选择排序

C语言实现选择排序选择排序是在每一轮比较中不是每当a[i]<a[j]时候就交换,而是用一个变量k记下其中较小的元素的下标值,在a[i]与a[i+1]~a[n]全部进行比较后,只将a[i]与a[i+1]~a[n]中最小的值进行交换,为此每一轮只需要将a[i]与a[k]的值进行交换即可。设有n个数据存储到从a[0]~a[n+1]的n个数组元素中,则选择排序过程分为如下n-1步骤:第一步:在第1~n个数中找出最小者,然后与第一个数进行比较,前1个数排好序第二步:在第2~n个数中找出最小者,然后与第二个数进行交换,

大家好,又见面了,我是你们的朋友全栈君。

选择排序是在每一轮比较中不是每当a[i]<a[j]时候就交换,而是用一个变量k记下其中较小的元素的下标值,在a[i]与a[i+1]~a[n]全部进行比较后,只将a[i]与a[i+1] ~ a[n]中最小的值进行交换,为此每一轮只需要将a[i]与a[k]的值进行交换即可。
设有n个数据存储到从a[0]~ a[n+1]的n个数组元素中,则选择排序过程分为如下n-1步骤:
第一步:在第1~n个数中找出最小者,然后与第一个数进行比较,前1个数排好序
第二步:在第2~n个数中找出最小者,然后与第二个数进行交换,前2个数排好序
…
第n-1步:在第n-1 ~ n个数中找出最小者,然后与第n-1个数进行交换,排序结束
算法分析:
n个待排序的数据分别存放在一维数组中,外层循环是次数循环,循环控制变量i依次取值0~ n-2,对应第1步~ 第n-1步。循环体是在a[i] ~ a[n-1]中寻找最小的值及其下标,找到后与a[i]交换。
代码如下:

#include <stdio.h>

void main(){ 
   
	 int i,j,k,n,temp,a[200];
	 printf("请输入需要排序的数据个数\n");
	 scanf("%d",&n);// 从键盘输入待排序的数据个数
	for(i=0;i<n;i++){ 
    // 利用for循环依次将输入的数据放置在数组中
		scanf("%d",&a[i]);
	}
	for(i=0;i<n-1;i++){ 
   // 外层循环 变量i控制排序总共进行n-1轮
		k=i;
		for(j=i+1;j<n;j++){ 
    //内层循环 变量j控制每轮进行比较的次数
			if(a[j]<a[k]){ 
   
				k=j;   //k记录每轮比较中的最小者的下标
				if(k!=i){ 
    //将第i轮的最小者,与a[i]交换
					temp=a[i];
					a[i]=a[k];
					a[k]=temp;
				}
			}
		}
	}
	printf("排序后的数据如下:\n");
	for(i=0;i<n;i++){ 
    // 利用for循环进行输出
		printf("%d\t",a[i]);
	}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153031.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JSONPath浅析

    JSONPath浅析 在日常的项目开发中,我们常常会为了避免在代码中hardcoding而对某些参数进行配置化,进而提高开发效率和灵活性。而常用的数据结构就是JSON。而对配置的数据的获取的方式常常有以下几种方式:第一种:JSONPath:@TestpublicvoidtestJsonPath(){JSONObjectdata=JSONObject…

    2022年6月16日
  • pycharm的介绍_为什么不建议学python

    pycharm的介绍_为什么不建议学pythonpycharm使用集成开发环境(IDE,IntegratedDevelopmentEnvironment)VIM#经典的linux下的文本编辑器Emacs#linux文本编辑器,比vim更容易使用Eclipse#JavaIDE,支持python,c,c++VisualStudio#微软开发的IDE,python,c++,ja…

    2022年8月28日
  • Excel vba编程实例 源码

    Excel vba编程实例 源码 PrivateSubCommandButton1_Click()AddOneAddNewFourthOneWorksheets(“Sheet2”).ActivateSeveralRowsClearRangeSetValueEnterValueCycleThroughEndSubSubAddOne()Workbooks.AddEndSubSubAddNew()

    2022年5月25日
  • java查看线程数量_oracle线程数最大多少

    java查看线程数量_oracle线程数最大多少TOPtop-H-p{pid}我这里筛选的是java的进程对应的thread是33PSpshuHp{pid}|wc-l直接计数统计出来

    2022年8月23日
  • WINRAR 去除广告[通俗易懂]

    WINRAR 去除广告[通俗易懂]WinRAR是目前市面上最优秀的压缩文件的软件之一。我个人非常喜欢的一款软件,以前还好,注册了就没广告了,现在这广告没完没了,注册了还是打开一次弹一次广告,究竟为啥?无意中使用了英文版的,发现并没广告,故去除广告最好的方法是用繁体中文版的,再注册,注册方法如下繁体版去官网下载https://www.rarlab.com/直接给下载页面吧,万一看不懂英语https://www.rarlab.com/d

    2022年6月12日
  • 微信小程序上传图片失败总结[通俗易懂]

    微信小程序上传图片失败总结[通俗易懂]错误:selfsignedcertificate这个是请求地址需要输第三方认证的域名,这个需要后端人员配置。错误:微信开发工具上可以上传图片,但是到体验版不行提示请求失败这个应该是在微信公众号平台里配置uploadFile合法域名…

    2022年6月18日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号