社区
C语言
帖子详情
简单选择排序最坏的情况的移动次数是多少啊?
fullmoon525
2006-03-03 04:51:25
如提
麻烦解释一下
...全文
2809
6
打赏
收藏
简单选择排序最坏的情况的移动次数是多少啊?
如提 麻烦解释一下
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wjd7623054
2006-03-06
打赏
举报
回复
我也同意是N!次
bohlee
2006-03-06
打赏
举报
回复
mark
duduhaha
2006-03-03
打赏
举报
回复
1
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
打赏
举报
回复
2
在最坏情况下为3(n-1)次(外循环执行n-1次,每次移动有三条赋值语句,固为3(n-1)次)。
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
课程设计 内部排序算法比较
内部排序算法比较(比较
次数
&
移动
次#include #define N 100//定义数组最大为100 const int t=3;//定义希尔排序
次数
int d[t]={4,3,1};//定义希尔排序比较量 int qmt;//快速排序的
移动
次数
int qct;//快速排序的比较
次数
void output(int n,int a[],int ct,int mt)//内部排序中调用的输出函数 { int i; printf("\n排序结果:"); for( i=0;i
次数:%d\n",ct);//输出各排序比较
次数
printf("
移动
次数
:%d\n\n",mt);//输出各排序
移动
次数
} void bubble_sort(int n,int A[])//冒泡排序 { int mt=0;//
移动
次数
mt=movetime int ct=0;//比较
次数
ct=cmdtime int i,j,temp; int a[N]; for(i=0;i
移动 } } printf("冒泡排序"); output(n,a,ct,mt); } 数)
[总结]各大内部排序算法性能比较+程序实现
总结整理的,5大内部排序算法性能的比较+程序实现。 已编译通过,测试正确。 --------- 搜遍网上,亦不可得的资料。 July、2010/11/01。:)。
各种排序最好
最坏
的比较
次数
都不知道怎么回答,各种排序说的也太多了,这里讲几种简单的吧,希望对你有帮助! 比如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语言
70,011
社区成员
243,256
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章