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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蒋文辉 中级黑马   /  2015-2-2 22:52  /  1677 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

并用Java语言实现一个效率较高的。。。我只知道选择、冒泡排序。
什么排序效率较高啊,求代码!!!!!!!!!!!!!!

13 个回复

倒序浏览
kuaisupaixu
回复 使用道具 举报
可以上网搜搜,排序算法广泛的有八大排序算法,然后每个算法又有不同的变种
回复 使用道具 举报
本帖最后由 艺多不压身丶 于 2015-2-3 23:01 编辑

首先排序分为四种: 要是说快。当然是快速排序比较快。加上默认的排序就是选择的快速排序
      交换排序: 包括冒泡排序,快速排序。
      选择排序: 包括直接选择排序,堆排序。
      插入排序: 包括直接插入排序,希尔排序。
      合并排序: 合并排序。
下面附上链接:可以参考一下。代码里面都是有的。记住思想就好
http://www.cnblogs.com/huangxincheng/archive/2011/11/14/2249046.html
回复 使用道具 举报
学习楼上,涨知识了。。
回复 使用道具 举报
同样涨姿势了!

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1 微信分享得分~

查看全部评分

回复 使用道具 举报
最快的是希尔了吧。。。
回复 使用道具 举报
是希尔排序最快把
回复 使用道具 举报
果断希尔排序,套3个for,但是这些算法实际开发中不会用的上,面试的话也只会面试常见的算法。冒泡,选择是最多的了
回复 使用道具 举报
算法,别深入研究,太浪费时间和精力,算法应该是有类库的
回复 使用道具 举报
当然是快速排序法,主要思想是:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。
回复 使用道具 举报
tds13821562936 发表于 2015-2-4 18:08
当然是快速排序法,主要思想是:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比 ...

public int getMiddle(Integer[] list, int low, int high) {  
        int tmp = list[low];    //数组的第一个作为中轴  
        while (low < high) {  
            while (low < high && list[high] > tmp) {  
                high--;  
            }  
            list[low] = list[high];   //比中轴小的记录移到低端  
            while (low < high && list[low] < tmp) {  
                low++;  
            }  
            list[high] = list[low];   //比中轴大的记录移到高端  
        }  
        list[low] = tmp;              //中轴记录到尾  
        return low;                   //返回中轴的位置  
    }  
回复 使用道具 举报
如果你想知道选择和冒泡排序哪个效率高,我给你我的基础测试的题目吧!!!
  1. /**
  2. *第一题: 请列举您了解的一些排序算法,并用Java语言实现一个效率较高的。
  3. * @author
  4. */
  5. //我了解的排序算法有(直接选择排序,冒泡排序,折半排序,快速排序,直接插入排序,希尔排序,归并排序)而冒泡排序算法效率较高。

  6. package com.itheima;

  7. class  Maopao
  8. {
  9.         //遍历数组
  10.         public void bianLI(int[] arr)
  11.         {
  12.                 System.out.print("[");
  13.                 for(int a =1;a<arr.length;a++)
  14.                 {
  15.                         //末尾出注意是"]"
  16.                         if(a==arr.length-1)
  17.                                 System.out.print(arr[a]+"]");
  18.                         else
  19.                                 System.out.print(arr[a]+",");
  20.                 }
  21.                 //换行
  22.                 System.out.println();
  23.         }
  24.         //折半插入排序
  25.         public  void bubbleSort(int[] str)
  26.         {
  27.          for ( int i = 0; i < str.length; i++ )
  28.         {
  29.             for ( int j = i + 1; j < str.length; j++ )
  30.             {
  31.                 if (str[i] > str[j])
  32.                 {
  33.                     swap(str, i, j);
  34.                 }
  35.             }
  36.         }
  37.     }
  38.         //元素交换位置
  39.         public void swap(int[] arr,int a,int b)
  40.         {
  41.                 arr[a]=arr[a]^arr[b];
  42.                 arr[b]=arr[a]^arr[b];
  43.                 arr[a]=arr[a]^arr[b];
  44.         }
  45. }

  46. public class Test1
  47. {
  48.        
  49.         public static void main(String[] args)
  50.         {
  51.                
  52.                 int[] arr = {3,6,8,9,3,8,10,14};
  53.                 Maopao s =new Maopao();
  54.                 //打印原数组
  55.                 s.bianLI(arr);
  56.                 //调用排序方法
  57.                 s.bubbleSort(arr);
  58.                 //打印排序后的数组
  59.                 s.bianLI(arr);
  60.                
  61.                
  62.         }
  63.                
  64. }
复制代码



回复 使用道具 举报
奔跑的猴子 来自手机 中级黑马 2015-2-5 14:10:16
14#
涨姿势了……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马