第67课 选择排序 例67.1 《小学生C++编程入门》

#include<iostream>
using namespace std;
int a[10001];
int main()
{
	int i,j,n;
	
	cin>>n;
	for(i=1;i<=n;i++) 
	  cin>>a[i];
	
	for(i=1;i<n;i++)  //进行第i趟排序 
	for(j=i+1;j<=n;j++) //第i趟要比较的次数 
		if(a[i]>a[j]) 
	    	swap(a[i],a[j]);  
	
	for(i=1;i<=n;i++)
	  cout<<a[i]<<" ";
	
	return 0;
} 

/*
1. 选择排序
(1) 基本思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,
顺序放在待排序的数列的最前,直到全部待排序的数据元素排完。
(2)排序过程:

【示例】:
初 始 关键字 [49 38 65 97 76 13 27 49]
第一趟排序后 13[49 65 97 76 38 27 49]
第二趟排序后 13 27[65 97 76 49 38 49]
第三趟排序后 13 27 38 [97 76  65  49 49]
第四趟排序后 13 27 38 49 [97 76 65 49]
第五趟排序后 13 27 38 49 49 [97 76 65]
第六趟排序后 13 27 38 49 49 65 [97 76]
第七趟排序后 13 27 38 49 49 65 76 [97]
最后排序结果 13 27 38 49 49 65 76  97 

*/
#include<iostream>
using namespace std;
const int MAXN=10001;
int main()
{       
	int n,k,i,j;
	float temp,a[MAXN];
	
	//输入n个数
	cin>>n;
	for (i=0;i<n;i++)
	{
		cin>>a[i]; 
	}
		   	
	for (i=0;i<n;i++)           
	//i控制当前序列中最小值存放的数据位置 n
	{
		k=i;
		
		//在当前无序区a[i..n]中选最小的元素a[k]
		for (j=i+1;j<n;j++)
			if (a[j]<a[k])  k=j;
		
		//交换a[i]和a[k],将当前最小值放到a[i]位置
		if ( k != i )   
		{
			temp=a[i];
			a[i]=a[k];
			a[k]=temp;
		}
	}
	
	for (i=0;i<n;i++)
	{
		cout<<a[i]<<" ";
	}
		
	return 0;
}

 

 


 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dllglvzhenfeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值