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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

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

7 个回复

正序浏览
个人觉得,冒泡排序比较好,应用的也较多,学好它,排序基本可以横着走了
回复 使用道具 举报
都是要了解的吧,这是基础!
回复 使用道具 举报
毕老师视频在讲数组操作的时候,讲到了两种排序方法,即选择排序和冒泡排序,下面是定义的两种排序方法的函数。楼主可做参考。个人觉得咱们初学者先掌握这两种也就够了。代码不重要,重要的是思想,要理解这两种排序的思想,毕老师视频里领着咱们画图分析就很给力!^_^
选择排序:
  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 赞一个!

查看全部评分

回复 使用道具 举报
就知道选择排序   冒泡排序   
回复 使用道具 举报
我个人觉得其实排序算法有很多 不可能每一种都能掌握 掌握其中你用的最顺手的就好 如果实在想要效率高的
其实java中自带一个排序算法 而且是比快速排序还优化了的  充分考虑了效率问题  就是Arrays.sort() 这个可以对数组排序 无论是整型该是字符 都可以排序 里面还可以定义排序规则 以后用它会比较方便
回复 使用道具 举报
快速排序   冒泡排序  插入排序  
回复 使用道具 举报
排序算法的效率主要由时间复杂度决定的,时间复杂度越小,效率越高,平均情况下快速排序、希尔排序、归并排序、堆排序的时间复杂度都为O(nlog(2)n),冒泡排序、简单选择排序、折半插入排序时间复杂度为O(n的平方),基数排序比较特殊为O(d(n+r)).。平均速度最快的是快速排序,其中不稳定定的排序算法有快速排序,希尔排序,堆排序。这些算法最好都要把他们看懂。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马