如何使用if和swap语句按升序排列数字?有人可以给我指点吗?
答案 0 :(得分:3)
答案 1 :(得分:2)
您是否尝试过搜索排序算法?例如,wikipedia's article有一个十几个表。我相信你能找到一个你喜欢的。
P.S。更常见的算法的文章有漂亮的插图或动画。这些对我有很大的帮助,除了看起来很有趣。
答案 2 :(得分:2)
如何有效地对100万个32位整数进行排序的经典答案是:bubble sort is the wrong way to go。 ;)
开玩笑吧。关于如何对事物进行排序的经典答案是这个视频:"Sorting Out Sorting"鉴于该视频中的动画和解释,编写代码留给读者练习。答案 3 :(得分:0)
您可以使用冒泡排序http://en.wikipedia.org/wiki/Bubble_sort
这是一个家庭作业问题吗?
答案 4 :(得分:0)
听起来很像家庭作业。避免冒泡排序 - 插入排序和选择排序更快,(至少对我来说)更容易理解。
编辑:我认为处理冒泡排序,学习经验或其他任何事情都没有多少借口。 AFAICT,泡沫排序首先被人们所知的唯一原因纯粹是历史事故:早在50年代,有一篇论文表明,对于有两个头的鼓式计算机来说,泡泡排序是最佳的,所以它一次可以访问两个数据项,这两个数据项按升序排列(仅限)。
即使这可能还不足以让人们记住它,但事实上,这篇论文似乎已成为第一个永远处理计算复杂性的论文。科学。在此之后的一段时间里,冒泡排序是任何对我们现在称之为计算机科学,算法,计算复杂性或任何非常相似的东西感兴趣的人研究的第一种算法。
这段历史事故(很久以来)安息吧。
答案 5 :(得分:0)
试试insertion sort;它理解和实现起来相当简单,似乎符合您的要求,并且可以让您很好地理解排序。您应该检查其他排序算法,至少如果您没有在课堂上学习更多(快速排序,合并排序等)。
编辑:从技术上讲,冒泡排序更接近你的要求(只是和交换)而不是插入排序,所以它可能是你的导师想到的......
答案 6 :(得分:-2)
你的意思是这样吗?
void sort3( int t[3] ){
int m[3];
if( t[0] > t[1] ){
if( t[2] > t[0] ){
m[0] = t[1]; m[1] = t[0]; m[2] = t[2];.
} else {
if( t[2] > t[1] ){
m[0] = t[1]; m[1] = t[2]; m[2] = t[0];.
} else {
m[0] = t[2]; m[1] = t[1]; m[2] = t[0];.
}
}
} else {
if( t[2] > t[1] ){
m[0] = t[0]; m[1] = t[1]; m[2] = t[2];.
} else {
if( t[2] > t[0] ){
m[0] = t[0]; m[1] = t[2]; m[2] = t[1];.
} else {
m[0] = t[2]; m[1] = t[0]; m[2] = t[1];.
}
}
}
memcpy( t, m, sizeof m );
}
以这种方式排序4个元素需要97行,5个元素需要513行。 (我使用perl脚本生成代码。)