A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chenzhiyuan 中级黑马   /  2014-5-23 10:45  /  1248 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

哪几种排序的效率高些?最好掌握那几种?

7 个回复

倒序浏览
排序算法的效率主要由时间复杂度决定的,时间复杂度越小,效率越高,平均情况下快速排序、希尔排序、归并排序、堆排序的时间复杂度都为O(nlog(2)n),冒泡排序、简单选择排序、折半插入排序时间复杂度为O(n的平方),基数排序比较特殊为O(d(n+r)).。平均速度最快的是快速排序,其中不稳定定的排序算法有快速排序,希尔排序,堆排序。这些算法最好都要把他们看懂。
回复 使用道具 举报
快速排序   冒泡排序  插入排序  
回复 使用道具 举报
我个人觉得其实排序算法有很多 不可能每一种都能掌握 掌握其中你用的最顺手的就好 如果实在想要效率高的
其实java中自带一个排序算法 而且是比快速排序还优化了的  充分考虑了效率问题  就是Arrays.sort() 这个可以对数组排序 无论是整型该是字符 都可以排序 里面还可以定义排序规则 以后用它会比较方便
回复 使用道具 举报
就知道选择排序   冒泡排序   
回复 使用道具 举报
毕老师视频在讲数组操作的时候,讲到了两种排序方法,即选择排序和冒泡排序,下面是定义的两种排序方法的函数。楼主可做参考。个人觉得咱们初学者先掌握这两种也就够了。代码不重要,重要的是思想,要理解这两种排序的思想,毕老师视频里领着咱们画图分析就很给力!^_^
选择排序:
  1. public static void selectSort(int[] arr)
  2.         {
  3.                 for (int x=0; x<arr.length-1 ; x++)//嵌套for循环
  4.                 {
  5.                         for(int y=x+1; y<arr.length; y++)
  6.                         {
  7.                                 if(arr[x]>arr[y])
  8.                                 {
  9.                                         /*
  10.                                         int temp = arr[x];
  11.                                         arr[x] = arr[y];
  12.                                         arr[y]= temp;
  13.                                         */
  14.                                         swap(arr,x,y);//另外定义的交换位置的函数
  15.                                 }
  16.                         }
  17.                 }
  18.         }
复制代码

冒泡排序:
  1. public static void bubbleSort(int[] arr)
  2.         {
  3.                 for(int x=0; x<arr.length-1; x++)
  4.                 {                                                                       
  5.                         for(int y=0; y<arr.length-x-1; y++)//-x:让每一次比较的元素减少,-1:避免角标越界。
  6.                         {
  7.                                 if(arr[y]<arr[y+1])
  8.                                 {
  9.                                         /*
  10.                                         int temp = arr[y];
  11.                                         arr[y] = arr[y+1];
  12.                                         arr[y+1] = temp;
  13.                                         */
  14.                                         swap(arr,y,y+1);//另外定义的交换位置的函数
  15.                                 }
  16.                         }
  17.                 }
  18.         }
复制代码

希望帮到你,共同学习!

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 赞一个!

查看全部评分

回复 使用道具 举报
都是要了解的吧,这是基础!
回复 使用道具 举报
个人觉得,冒泡排序比较好,应用的也较多,学好它,排序基本可以横着走了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马