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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一世英明 中级黑马   /  2014-4-4 19:08  /  942 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

想排序的时候用那种排序好呢?

5 个回复

倒序浏览
冒泡排序:
相邻的两个元素进行比较,如果条件符合换位。最值出现在末角标位置
折半排序法、也就是二分排序法
通过不断取中间值进行比较来进行排序
折半查找,提高效率,但是必须要保证该数组时有序的数组

一般来说用冒泡进行排序,用折半来查找,最后都是有序的排列

点评

很好  发表于 2014-4-4 20:20

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

回复 使用道具 举报 1 0
LS说的对啊

我想了一下 好像是折半排序法比冒泡排序要快
回复 使用道具 举报
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
  1. // 冒泡排序
  2.         public static void bubblesort(int [] arr)
  3.         {
  4.                 for( int x=0; x<arr.length; x++)  //  for(int x=arr.length-1; x>0; x--)
  5.                 {                        // for( int y=0; y<x; y++)
  6.                         for( int y=0; y<arr.length-1-x; y++) //-x: 让每一次比较的元素减少;-1:避免下表越界
  7.                         {
  8.                                 if(arr[y]>arr[y+1])
  9.                                 {       
  10.                                         /*
  11.                                         int temp=arr[y];
  12.                                         arr[y]=arr[y+1];
  13.                                         arr[y+1]=temp;
  14.                                         */
  15.                                         swap(arr,y,y+1);
  16.                                 }       
  17.                         }       
  18.                 }
  19.         }
复制代码


二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。

  1. // 折半查找可以提高查找效率,但必须要保证该数组是有序的数组
  2.         public static int halfsearch( int  [] arr, int key)
  3.         {
  4.                 int min, max, mid;
  5.                 min=0;
  6.                 max=arr.length-1;
  7.                 mid=(min+max)/2;
  8.                 while(arr[mid]!=key)
  9.                 {
  10.                         if(arr[mid]>key)
  11.                                 max=mid-1;
  12.                         else if(arr[mid]<key)
  13.                                 min=mid+1;
  14.                         if(min>max)
  15.                         return -1;
  16.                         mid=(min+max)/2;
  17.                 }
  18.                 return mid;
  19.         }
复制代码

评分

参与人数 1黑马币 +1 收起 理由
Kelvinhu + 1 赞一个!

查看全部评分

回复 使用道具 举报
想排序的时候用冒泡比较好一点,折半在查找的时候是一个很好的算法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马