排序算法-选择排序(n2)

选择排序

选择算法的原理在于用数组里的起始数组和后面的进行比较,即在数组中找到最小的一位,然后将这个最小的一位数据和数组的起始位进行交换,下一轮便将之前的起始位排除不考虑,重新定义起始位,即上一个起始位的下一个,然后又找出最小的一位和现在的起始位进行交换,直到起始位到达数组的最后一位,算法结束。

#include<iostream>
#include<string>

using namespace std;

void ChooseSort(int* buf, int length);

int main()
{
	int buff[7] = { 5, 2, 1, 4, 9, 6, 0 };
	for (int i = 0; i < 7; i++)
		cout << buff[i] ;
	cout << endl;
	ChooseSort(buff, 7);
	for (int i = 0; i < 7; i++)
		cout << buff[i];
	cout << endl;
	return 0;
}


void ChooseSort(int* buf, int length)
{
	int count = 0, temp = 0;
	int begin = 0;
	while (begin < length-1)
	{
		
		temp = buf[begin]; //记录初始的位置
		for (int i = begin+1; i < length; i++)
		{
			if (temp>buf[i])
			{
				temp = buf[i];
				count = i; //记录最小数值的位置
			}
		}
		if (count != 0) //这里的判断是为了防止count为0的时候也执行了交换,导致错误
		{
			buf[count] = buf[begin];
			buf[begin] = temp;
		}
		/找到数组中最小的一位并与初始位进行交换
		begin++;
		count = 0;
	}
}

代码说明:temp一开始记录的位数组的起始位,while里的循环是为了找到从起始位的后一位到数组结束的中间的比起始位小的数据,如果存在便交换最小数据和起始位,否则不做任何操作。值得注意的是程序里定义了一个count来记录最小位的位置,否则无法将起始位与最小位进行交换。同时count在不一轮结束后都要清零,这就带来一个问题,如果不会count进行判断,那么便会发生一种情况:如果起始位就是最小的,不用交换,那么count就是0,不加判断的话,起始位便会和数组的第一位进行交换,出现错误(我们知道起始位之前的数据是不能动的)。begin不断的增加,即起始位不断的右移,直到到达数组的倒数第二位,遍历完成。

效果:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值