伪代码验证选择排序和java冒泡排序代码的正确性

> 选择排序和冒泡排序就该踢出教材?该如何处理
选择排序和冒泡排序就该踢出教材?该如何处理
发布时间: & &
浏览:15 & &
回复:8 & &
悬赏:0.0希赛币
选择排序和冒泡排序就该踢出教材 至于这两个该踢出教材之说,姑且认为只是为了吸引眼球... 我只知道不少工作了几年的人给他讲那些O(N * logN)的算法都弄得我想跳楼,学校老师也不容易。说说这两个算法的地位。1. 选择排序是无法取代的。目前我不知道也没人跟我说过有什么排序算法逻辑比选择排序更简单。逻辑简单意味着代码量少,代码量少意味着单次循环执行速度就快。logN有个特点:log512 = 9, log256 = 8, ..., log16 = 4, log8 = 3, log4 = 2, log2 = 1。也就是N越小logN和N越接近。8开始logN和N的关系基本上就是1:2了。而这个时候,对于很多比较压力小的排序,选择排序一次循环花的时间已经不到O(N * logN)算法的一半了。所以其实真正使用快速排序或者合并排序的时候,往往会处理成当前的子序列短到一定程度的时候就切换成选择排序。2. 冒泡也许的确是鸡肋算法,包括直接变体鸡尾酒算法,至少我还没碰上过什么加上冒泡算法比较好的情况。不过,除了鸡尾酒,冒泡排序还有一种至关重要的变体——堆排序。总之,不能太小看简单的算法。
潜力贴。我这样做是不是太水了?啊……我知道错了……神啊……楼主啊……原谅我吧。
& & (0)(0)O(n*n)算法和O(n*logn)算法都值得学习,O(n*n)算法通常是O(n*logn)算法的基础,易懂,代码简短,但并不意味着O(n*logn)算法就是高深的和复杂的,比如梳子排序算法也是O(n*logn)的,但是代码量不多于O(n*n)的选择排序和冒泡排序,而且也很容易理解,只不过是不稳定的排序。x
& & (0)(0)头一次看到“鸡尾酒排序”,google一下看了看实现原理,
发现很适合用来排序基本有序的数据。刚好前一段时间还遇到过这种情况,不过数据量也不大。
& & (0)(0)6楼说得很好,顶一下不过并不是gap为k,就是以k为底的,这个我也不懂,但是梳子排序中,1.3是一个实验值,gap取1.3通常比取2快
& & (0)(0)我比较喜欢选择排序。主要是通用性强,逻辑简单,不容易出错。如果有特别的速度瓶颈,我才会考虑去寻找更好的排序算法。
& & (0)(0)我写程序的时候,感觉在设计上越接近生活逻辑--而不是计算机逻辑,则代码维护起来就越容易。对象就是一个最好的例子。一个对象,对应了生活中一个具体的事物,大家操纵起来就很舒服。
& & (0)(0)一个帖子不能说明全部问题两位作者,都说得有道理,而且不相冲突原先一贴,让大家更多的对比与认识。此贴让我们明白&韩寒虽然牛x,但不能取笑老一辈&
kf_cf007 & &
& & (0)(0)算法复杂度不能完全决定程序执行的效率,还有许多细节要注意,包括Cache miss ,TLB miss等等技术问题。总之,既要考虑计算速度,更要考虑存储层次。kf1010 & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-求冒泡排序的全中文的伪代码 ?_百度知道
求冒泡排序的全中文的伪代码 ?
初学编程,知道了冒泡排序是什么?但是就是写不出来!!
伪代码啊,还真不好描述:假设有N个数,可以想象成所有的数分成两部分:上部和下部,上部的是排好序的,下部的没有。外层循环N-1次(i从0到N-2){
//每循环一次就能让一个下部数中最大的冒到上部来
内层循环从0开始,循环到j(j=N-i){
//保证下部的每个位置都进行一次冒泡判断
如果当前的数比它上面的一个数大,就互换位置(冒上来一次)。
/* 这是互换代码
if(array[j]&array[j+1])
int tmp=array[j];
array[j]=array[j+1];
array[j+1]=
//可以想象,如果足够大,该数会一直更新位置,一直往上冒,到达合适位置。
}}外层循环结束后就排好序了。这个算法的特点就是如果一个数是下部中最大的,它就能一直往上冒,不管它当初在什么位置,内层一轮冒泡后它就能冒到上部去(成为上部里最小的)。N-1轮后就排好序了。描述的不怎么好,还写不出来的话可以直接要代码(猜你是想自己写出来所以没贴代码)
其他类似问题
为您推荐:
其他1条回答
i从n-1到1循环 j从i+1到n循环
如果数组的第j个元素大于(小于)第j+1个元素那么将第j个元素和第j+1个元素交换
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁用matlab进行冒泡和选择排序_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
用matlab进行冒泡和选择排序
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢当前访客身份:游客 [
这个人很懒,啥也没写
目前还没有任何评论
今日访问:3
昨日访问:2
本周访问:5
本月访问:19
所有访问:595
Python之冒泡排序和选择排序的比较
发表于1年前( 14:31)&&
阅读(106)&|&评论()
0人收藏此文章,
& & &个人有时候会把冒泡排序和选择排序搞混了,因为感觉它们之间的差别也没太大,如下是冒泡排序Python的代码:
class&BubbleSort:
&&&&def&__init__(self):
&&&&&&&&self.initArr()
&&&&def&initArr(self):
&&&&&&&&self.arrInfo&=&[60,&61,&27,&91,&92,&44,&13,&20,&24,&14]
&&&&def&bubbleSortFromStartToEnd(self):
&&&&&&&&length&=&len(self.arrInfo)
&&&&&&&&for&i&in&range(length):
&&&&&&&&&&&&for&j&in&range(length-i-1):
&&&&&&&&&&&&&&&&if&self.arrInfo[j]&&&self.arrInfo[j+1]:
&&&&&&&&&&&&&&&&&&&&tmp&=&self.arrInfo[j]
&&&&&&&&&&&&&&&&&&&&self.arrInfo[j]&=&self.arrInfo[j+1]
&&&&&&&&&&&&&&&&&&&&self.arrInfo[j+1]&=&tmp
&&&&def&bubbleSortFromEndToStart(self):
&&&&&&&&length&=&len(self.arrInfo)
&&&&&&&&for&i&in&range(0,length):
&&&&&&&&&&&&for&j&in&range(length-1,i,-1):
&&&&&&&&&&&&&&&&if&self.arrInfo[j]&&&self.arrInfo[j-1]:
&&&&&&&&&&&&&&&&&&&&tmp&=&self.arrInfo[j]
&&&&&&&&&&&&&&&&&&&&self.arrInfo[j]&=&self.arrInfo[j-1]
&&&&&&&&&&&&&&&&&&&&self.arrInfo[j-1]&=&tmp
&&&&def&printResult(self):
&&&&&&&&print&self.arrInfo
&&&&&&&&self.bubbleSortFromEndToStart()
&&&&&&&&print&self.arrInfo
BubbleSort().printResult()
& & 如下是选择排序Python的代码:
class&SelectSort:
&&&&def&__init__(self):
&&&&&&&&self.initArr()
&&&&def&initArr(self):
&&&&&&&&self.arrInfo&=&[60,&61,&27,&91,&92,&44,&13,&20,&24,&14]
&&&&def&selectSort(self):
&&&&&&&&length&=&len(self.arrInfo)
&&&&&&&&for&i&in&range(length):
&&&&&&&&&&&&position&=&i
&&&&&&&&&&&&for&j&in&range(i,length):
&&&&&&&&&&&&&&&&if&self.arrInfo[position]&&&self.arrInfo[j]:
&&&&&&&&&&&&&&&&&&&&position&=&j
&&&&&&&&&&&&tmp&=&self.arrInfo[i]
&&&&&&&&&&&&self.arrInfo[i]&=&self.arrInfo[position]
&&&&&&&&&&&&self.arrInfo[position]&=&tmp
&&&&def&printResult(self):
&&&&&&&&print&self.arrInfo
&&&&&&&&self.selectSort()
&&&&&&&&print&self.arrInfo
SelectSort().printResult()
& & 冒泡排序主要看bubbleSortFromEndToStart方法,该方法的效果和选择排序类似,唯一的区别是冒泡排序交换0~n-1次,而选择排序只交换一次。同时需要注意索引,排序里面很恶心的一点就是索引了,有时候按照伪代码来实现算法,效果不尽理想,一般很有可能也是出现在索引问题上。
更多开发者职位上
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读

我要回帖

更多关于 冒泡排序算法 的文章

 

随机推荐