C++选择法排序

1、定义
选择法是指将每个数都与数组中的数比较,然后和最小的数交换位置,共进行n-1轮比较。
2、步骤
在这里插入图片描述
3、编写程序

int main()
{
	void sort(int array[],int n);//声明函数 
	int a[5],i;   //定义一个数组和变量
	printf("请输入5个数:\n");
	for(i=0;i<5;i++)   //循环输入数组的值
	{
		scanf("%d",&a[i]);
	}
	sort(a,5);   //调用sort函数
	printf("排完序的结果为:\n");
	for(i=0;i<5;i++)    //循环输出数组的值
	{
		printf("%d",a[i]);
	}
	printf("\n");
	system("pause");
	return 0;
	
}
void sort(int array[],int n)   //函数定义   array[]  int n都为形参
{
	int i,j,k,t;       //定义几个变量
	for(i=0;i<n-1;i++)     //定义一共循环几趟
	{
		k=i;
		for(j=i+1;j<n;j++)   //定义一个数组中的数循环
		{
			if(array[j]<array[k])    //假设当i=0时k=0代表数组第一个元素,j=1代表数组第二个元素,让array[1]和array[0]比较
			{                        //如果array[1]小于array[0]  就让k=array[j]的下标,表示将这两个下标互换
				k=j;				 //如果array[1]<array[0],那么k=1,接着让array[1]和array[j+1]比较
			}
		}
		t=array[k];array[k]=array[i];array[i]=t;   //比较下来,array[k]成了最小的值了,后把它和array[i]交换
	}
}

4、结果
在这里插入图片描述
后续延申
选择法对数组从大到小排序

//选择法对数组元素排序
int main(){
	void sort(int x[],int n);
	int i,*p,a[10];
	p=a;
	printf("输入数组元素:\n");
	for(i=0;i<10;i++,p++){
		scanf("%d",p);
	}
	p=a;//让p重新为a的首元素地址
	printf("初始数组为:\n");
	for(i=0;i<10;i++,p++){
		printf("%d",*p);
	}
	p=a;
	printf("\n");
	sort(p,10);
	printf("排序后的元素为:\n");
	p=a;
	for(i=0;i<10;i++,p++){
		printf("%d",p++);
	}
	printf("\n");
	system("pause");
	return 0;

}
void sort(int x[],int n){
	int i,h,t,j;
	for(i=0;i<n-1;i++){
		h=i;
		for(j=i+1;j<n;j++){
			if(x[j]>x[h]){
				h=j;
			}
			if(h!=i){
				t=x[i];x[i]=x[h];x[h]=t;
			}
		}
	}
	return;
}
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值