请描述下排序算法?
答案:4 悬赏:50 手机版
解决时间 2021-05-03 04:02
- 提问者网友:锁深秋
- 2021-05-02 21:15
在排序算法里面,分别有什么算法?这些算法的思路是怎样的?各有什么优缺点?
最佳答案
- 五星知识达人网友:神也偏爱
- 2021-05-02 21:56
就是两两判断大小,把大的放在后面,然后在两两判断----就是一直判断下去,把小的放在前面,大的放在后面。然后在输出出来,就是从小到大排列。
全部回答
- 1楼网友:孤独入客枕
- 2021-05-03 00:31
有快速排序,冒泡排序,插入排序,选择排序,希尔排序,计数排序。。。。。细分的话很多,只讲些普通的吧。
快排就是将开头的元素设为中间值,通过头尾指针的移动来将小于中间值的数排左边,大于排右边,然后再分别对左右快排..循环..直到结束,一般链表实用较多,而且效率也算是比较高的;
冒泡排序就是通过循环嵌套每次将最大数沉到底部,算法实现比较简单,效率低;
插入有很多种
直接插入排序:顾名思义,取第i个数,插入到已经有序的a[0]~a[i-1]中,实现简单,效率低;
折半插入:在a[0]~a[i-1]中采用折半查找法寻找a[i]的插入位置;
直接选择排序:执行n-1趟排序,第i(1≤i ≤n-1)次排序将a[0~n-i]中的最大元素a[j]与a[n-i]互换;
希尔排序。。。忘了。。。;
计数排序感觉最简单。。。适用于数值交小的排序,如有1、4、2、5、6、9、3、2、1、2、4、5
这一乱序,可以申请一个a[10],初值0,排序过程则为:
a[1]++;
a[4]++;
a[2]++;
a[5]++;
a[6]++;
。。。。。
显示排序结果:
for(i=0;i<10;i++)
for(j=0;j<a[i];j++)
cout<<a[i];
输出结果即排序结果,方法简单,适用范围小,不过有时比上面的算法效率高很多,看情况使用;
楼上说的java里的是array.sort()方法,是改进的快排,但是要实现compareable接口并复写compareto()方法;
要详细了解排序算法的话可以google下,这里讲的比较浅。
- 2楼网友:躲不过心动
- 2021-05-02 23:31
我知道的有插入,冒泡,希尔,快速.还有其他的就不知道了,一般是用冒泡,但是如果数据很多,冒泡就会变的很慢,这是冒泡最大的缺点,应为数据要经过2次比较,速度会降低.....还有就是JAVA的JDK里面的LIST有自带compareTo的排序方法,只要重写下方法就可以了,所以一般也不要去写什么排序算法,具体的
- 3楼网友:玩世
- 2021-05-02 22:30
我常用的就是冒泡法 FOR 循环里再加一下FOR循环,外循环次数为 数组长度-1,内循环次数为 数组长度-1-i 具体可以百度一下冒泡排序 很详细!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯