社区
C语言
帖子详情
简单选择排序最坏的情况的移动次数是多少啊?
fullmoon525
2006-03-03 04:51:25
如提
麻烦解释一下
...全文
2377
6
打赏
收藏
简单选择排序最坏的情况的移动次数是多少啊?
如提 麻烦解释一下
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wjd7623054
2006-03-06
打赏
举报
回复
我也同意是N!次
bohlee
2006-03-06
打赏
举报
回复
mark
duduhaha
2006-03-03
打赏
举报
回复
n(n-1)/2是比较次数,而不是数据移动次数,这个要分清.移动次数是在swap语句中发生的.
如果调用swap的次数是n-1,每次需要3个赋值语句,那么总共就要3(n-1)次.
应该标准就是这样的.
屋顶上的老猫
2006-03-03
打赏
举报
回复
一个集合中选择一个最小数,与首位交换位置!然后在待选集合中再次选择最小数与第二个交换位置....
最坏情况是每次循环到最后一次,也就是从n-1、n-2、n-3...1
等差数列求和为n(n-1)/2,这个为最坏情况的次数
lbing7
2006-03-03
打赏
举报
回复
好像是N!次
duduhaha
2006-03-03
打赏
举报
回复
1
在最坏情况下为3(n-1)次(外循环执行n-1次,每次移动有三条赋值语句,固为3(n-1)次)。
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
简单选择排序
在
简单选择排序
过程中,所需
移动
记录的
次数
比较少。最好
情况
下,即待排序记录初始状态就已经是正序排列了,则不需要
移动
记录。
最坏
情况
下,即待排序记录初始状态是按逆序排列的,则需要
移动
记录的
次数
最多为3(n-1)。
简单选择排序
过程中需要进行的比较
次数
与初始状态下待排序的记录序列的排列
情况
无关。当i=1时,需进行n-1次比较;当i=2时,需进行n-2次比较;依次类推,共需要进行的比较
次数
是(n-1)+(n-2)+…+2+1=n(n-1)/2,即进行比较操作的时间复杂度为 O(n^2)。
简单选择排序
是不稳定排序。
11丨排序(上):为什么插入排序比冒泡排序更受欢迎?1
1. 最好
情况
、
最坏
情况
、平均
情况
时间复杂度 2. 时间复杂度的系数、常数 、低阶 3. 比较
次数
和交换(或
移动
)
次数
各种排序最好
最坏
的比较
次数
都不知道怎么回答,各种排序说的也太多了,这里讲几种简单的吧,希望对你有帮助! 比如n个顺序存储元素进行排序,a[0]做“哨兵”(即a[0]不存数据,而是用作辅存空间使用)的
情况
1 直接插入排序:比较
次数
最少n-1次;最多(n-1)(n+2)/2
移动
次数
最少0; 最多(n-1)(n+4)/2
简单选择排序
(四种常见排序之一)
简单选择排序
在
简单选择排序
过程中,所需
移动
记录的
次数
比较少。最好
情况
下,即待排序记录初始状态就已经是正序排列了,则不需要
移动
记录。
最坏
情况
下,即待排序记录初始状态是按第一条记录最小,之后的记录从小到大顺序排列,则需要
移动
记录的
次数
最多为3(n-1)。
简单选择排序
过程中需要进行的比较
次数
与初始状态下待排序的记录序列的排列
情况
无关。当i=1时,需进行n-1次比较;当i=2时,需进行n-2次...
冒泡排序
最坏
情况
冒泡排序
最坏
情况
比较
次数
:n(n-1)/2
最坏
情况
下,每一轮该元素要和其他每一个元素进行比较。 第n轮,比较
次数
为n-1. 总
次数
(n-1)+(n-2)+(n-3)+…1=*n(n-1)/2
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章