这个排序叫什么算法?

xjyr 2006-02-22 12:54:22
void sort(int *a, int n)
{
int i,j;

for(i=0; i<n-1; i++)
{
for(j=i+1; j<n; j++)
if( a[i] < a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;

}
}
}
我以前毫不犹豫的告诉学生,这叫冒泡排序,现在才知道根本不是,请问,那这叫什么排序啊?
好惭愧啊!
...全文
280 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenzhichao2008 2006-02-23
  • 打赏
  • 举报
回复
不伦不类的选择排序
mailpq 2006-02-23
  • 打赏
  • 举报
回复
如果完全按照书上的定义来说,这个也非选择排序!
(选择排序是每趟选出最大的分别与第一,第二个位置……交换,其他位置不动)
因此选者排序的算法应该是:
void sort(int *a,int n)
{
int i,j,k;
int temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(a[k]<a[j])k=j;//k用来记录每趟的最大值下标;
if(i!=k)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}
照这么说,你那个应该是个效率不很高的选择排序,
一人之见,望大家指教,呵呵
seabright2002 2006-02-23
  • 打赏
  • 举报
回复
应该是选择排序
lisypro 2006-02-23
  • 打赏
  • 举报
回复
直接插入排序
lonelyforest 2006-02-23
  • 打赏
  • 举报
回复
还是看看 谭老师的<<c程序设计》或许帮助比较大;
fccfcc1234 2006-02-23
  • 打赏
  • 举报
回复
果然是奇怪的排序方法.不过效率应该比选择低.
还是想想给个恰当的名字吧....选择冒泡法.
province_ 2006-02-23
  • 打赏
  • 举报
回复
是选择排序,排好后大头在前。
sankt 2006-02-23
  • 打赏
  • 举报
回复
每次从无序表中取出一个元素,插入到有序表的适当位置,称作插入排序.
每次从无序表中选出一个最大或最小元素,把它交换到有序表的一端,称作选择排序.

//====
所以楼主这个排序不是正宗的选择排序

cad_vc 2006-02-23
  • 打赏
  • 举报
回复
不是冒泡,也不是选择。
恭喜你,你找到一个新的排序方法。
missedyou_1984 2006-02-23
  • 打赏
  • 举报
回复
太明显了
是冒泡排序
排序分好几种 其中快速排序法最好了
cavinzhang 2006-02-23
  • 打赏
  • 举报
回复
算是选择排序吧
bm1408 2006-02-22
  • 打赏
  • 举报
回复
select sort
SammyLan 2006-02-22
  • 打赏
  • 举报
回复
直接插入排序
AmyLin_2001 2006-02-22
  • 打赏
  • 举报
回复
void sort(int *a, int n)
{
int i,j;
int flag;
for(i=0; i<n-1; i++)
{
for(j=i+1; j<n; j++)
if( a[i] < a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;

}
}
}
选择排序,每次把最大的放第一个
xiaocai0001 2006-02-22
  • 打赏
  • 举报
回复
选择排序!

冒泡排序如下:
void sort(int *a, int n)
{
int i,j;

for(i=0; i<n-1; i++)
{
for(j=i+1; j<n; j++)
if( a[j-1] < a[j])
{
t = a[j-1];
a[j-1] = a[j];
a[j] = t;

}
}
}

冒泡排序是相邻比较,选择排序是与每一趟与指定的位置比较。
liqiuhua123 2006-02-22
  • 打赏
  • 举报
回复
选择排序,每回都选一个最小的,第二小的,....最大的

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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