选择排序代码的问题

skyxxiaooy 2019-10-09 09:00:38
如图,每找到一个相对小的数就与应放位置发生交换,并未减少交换次数啊。不是应该比较完将最小数存放在交换,找了好多代码都是这样,求教
...全文
53 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2019-10-10
  • 打赏
  • 举报
回复
引用 2 楼 YGLeeeon 的回复:
你找的代码貌似是冒泡排序,不是选择排序
/*======================选择排序==========================
选择排序:
选择最小的放在左端
原地排序算法;基本排序算法;
*/
void MySort::SelectSort(vector<int>& a)
{
int N = a.size();
int tmp;
int min;
for (int i = 0; i < N; i++) {
min = i;
for (int j = i + 1; j < N; j++) {
if (less(a[j], a[i]))
min = j;
}
exchan(a, i, min);
}
}

楼主的代码是选择排序,选择排序比冒泡优点是可能会减少交换次数。
YGLeeeon 2019-10-10
  • 打赏
  • 举报
回复
你找的代码貌似是冒泡排序,不是选择排序
/*======================选择排序==========================
		选择排序:
		选择最小的放在左端
		原地排序算法;基本排序算法;
*/
void MySort::SelectSort(vector<int>& a)
{
	int N = a.size();
	int tmp;
	int min;
	for (int i = 0; i < N; i++) {
		min = i;
		for (int j = i + 1; j < N; j++) {
			if (less(a[j], a[i]))
				min = j;
		}
		exchan(a, i, min);
	}
}
wowpH 2019-10-09
  • 打赏
  • 举报
回复
虽然我听不懂你在说什么,但是你的代码是对的。

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧