前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言实现选择排序

C语言实现选择排序

作者头像
全栈程序员站长
发布2022-09-12 17:53:11
4180
发布2022-09-12 17:53:11
举报

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

选择排序是在每一轮比较中不是每当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]交换。 代码如下:

代码语言:javascript
复制
#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.cn/153031.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档